小明一家过桥_【练习】用python解决小明一家过桥问题

import random

list1=[] #存放所有遍历的结果

#等待过桥的人员

bridge1={'小明':1,'弟弟':3,'爸爸':6,'妈妈':8,'爷爷':12}

#过桥后的人员

bridge2={}

#判断未过桥的人是否空了(全部过完后,程序停止,看总共用了多长时间)

len1=len(bridge1)

print(len1)

#while True:

print('初始情况:当前未过桥的人是:',end=' ')

print(bridge1)

print('初始情况:当前已过桥的人是:', end=' ')

print(bridge2)

print('*********************************')

#一次while,就完成一次一家人完整的过河流程;一次fow,就完成一次过河和回来的过程(2个人过河,一个人回来)

while True:

for i in range(1,10):

print('第%d次过桥和回来的过程如下:' % i)

#随机从未过桥的人员中取一个人出来(key),取出来是一个字符串型的数据

p1=random.choice(list(bridge1))

print(p1+'准备过桥')

#print(type(p1))

#取出后,将这个人对应的过桥时间取出来(value),取出来是一个整数型的数据

print(p1+'的时间为'+str(bridge1[p1]))

#print(type(bridge1[p1]))

time1=bridge1[p1] #将第一个人的所用时间存起来,用于后面比较取大值

#取出第一个人后,把这个人赋值给已过河的人,并且从未过河的人群中删除

bridge2[p1]=bridge1[p1]

del bridge1[p1]

print(bridge1)

#print('准备过桥:', end=' ')

#print(bridge2)

#同理,再从未过桥的人随机取一个人和对应的时间。此时发现一个问题,有可能和前一次取的人一样,所以前面应该取一次,删一次。

p2=random.choice(list(bridge1))

print(p2+'准备过桥', end=' ')

#print(type(p2))

#print(bridge1[p2])

#print(type(bridge1[p2]))

time2=bridge1[p2] #将第二个人的所用时间存起来,用于后面比较取大值

print(p2+'的时间为:'+str(bridge1[p2]))

#取出第二个人后,把这个人赋值给已过河的人,并且从未过河的人群中删除

bridge2[p2]=bridge1[p2]

del bridge1[p2]

print(bridge1)

print('已过桥:', end=' ')

print(bridge2)

#求上面两个值的最大值

time3=max(time1, time2)

print('过桥时间为:'+str(time3))

total_time=total_time+time3

#再将总时间减去第一次过河的最长时间

#left_time=30-time3

print('当前未过桥的人是:',end=' ')

print(bridge1)

print('当前已过桥:', end=' ')

print(bridge2)

#如果都过完河了,就没必要再返回啦!所以终止!

if len(bridge1)==0:

print('最终总时长为:%d' % total_time)

break

#print('当前剩余时间为:%d' % left_time)

#再从已过桥的人中选一个时间最短的人回来,再把这个人的所用时间取出来,再把这个人从已过桥的人中搬回未过桥的人中

p3=min(bridge2, key=bridge2.get)

#p3=random.choice(list(bridge2))

time4=bridge2[p3]

print(p3+'回来', end=' ')

#print(bridge2[p3])

print(p3+'的时间为:'+str(bridge2[p3]))

bridge1[p3]=bridge2[p3]

del bridge2[p3]

len1=len(bridge1)

print('当前已过桥:', end=' ')

print(bridge2)

print('当前未过桥:', end=' ')

print(bridge1)

total_time = total_time+time4

print('当前总花费时间:%d' % total_time)

##记录下这一轮完整过桥的时间

list1.append(total_time)

#print(list1)

if total_time<=30:

break

#执行完一轮之后,重新恢复初始状态,再跑一轮

bridge1={'小明':1,'弟弟':3,'爸爸':6,'妈妈':8,'爷爷':12}

bridge2={}

total_time=0

list1.sort()

print(list1)

运行结果:

e9888c308cf82cfa03c463517dc95327.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础,DDL和DML(新人入门向)

SQL 作为关系型数据库管理系统的标准语言&#xff08;ANSI X3.135-1986&#xff09;&#xff0c;在 1987 年得到国际标准组织的支持成为国际标准。不过不同数据库系统之间的 SQL 不能完全通用。 SOL——Structured Query Language 结构化查询语言 DDL——Data Definition Lan…

天然气门站监控摄像头如何布置_监控摄像头布置原则

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":8,"count":8}]},"card":[{"des":"时间序列数据库 (Time Series Database , 简…

Mysql 函数入门

1.数学函数 数学函数是用来处理数值数据方面的运算&#xff0c;MySQL 中主要的数学函数有绝对值函数、三角函数、对数函数和随机函数等。数学函数 功能介绍 TRUNCATE(x,y) 返回截去小数点后 y 位的数值 x RAND() 返回一个随机浮点值 v&#xff0c;0<v<1 RAND(x)…

WGZX:javaScript 学习心得--1

标签&#xff1a; javascriptiframedreamweaver浏览器htmltable2008-09-11 10:50 1071人阅读 评论(0) 收藏 举报分类&#xff1a;UI&#xff08;21&#xff09; 1&#xff0c;document.getElementById方法只能获取到一个对象&#xff0c;即使有多个同名的对象&#xff0c;也只取…

MySQL 聚合函数 和 分组查询(初级)

聚合函数用于对一组值进行计算并返回一个汇总值&#xff0c;使用聚合函数可以统计记录行数、计算某个字段值的总和以及这些值的最大值、最小值和平均值等。函数名称 功能 sum 返回选取的某列值的总和 max 返回选取的某列的最大值 min 返回选取的某列的最小值 avg …

mysql时长用什么类型_MySQL 日期时间类型怎么选?千万不要乱用!

构建数据库写程序避免不了使用日期和时间&#xff0c;对于数据库来说&#xff0c;有多种日期时间字段可供选择&#xff0c;如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。不仅新手&#xff0c;包括一些有经验的程序员还是比较迷茫&#xff0c;究竟我该用哪种类…

PHP----练习-----新闻管理----增删改查

练习-----新闻管理 题目要求如下&#xff1a; 做法&#xff1a; 【1】建数据库 【2】封装类文件--------DBDA.class.php 1 <?php2 class DBDA3 {4 public $fuwuqi"localhost"; //服务器地址5 public $yonghuming"root";//用户名6 public …

MYSQl 连接查询

查询信息的来源如果来自多张表&#xff0c;就必须对这些表进行连接查询。连接是把不同表的记录连到一起的最普遍的方法&#xff0c;通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接。交叉连接&#xff08;Cross Join&#xff09;&#xff0c;又称“笛卡…

mysql窗口函数_MySQL8.0窗口函数入门实践及总结

前言MySQL8.0之前&#xff0c;做数据排名统计等相当痛苦&#xff0c;因为没有像Oracle、SQL SERVER 、PostgreSQL等其他数据库那样的窗口函数。但随着MySQL8.0中新增了窗口函数之后&#xff0c;针对这类统计就再也不是事了&#xff0c;本文就以常用的排序实例介绍MySQL的窗口函…

MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法...

MyEclipse 打开后有时候莫名的在server窗口里抛出“Could not create the view: An unexpected exception was thrown”错误&#xff0c;解决办法&#xff1a;打开myeclipse所在的wordspace文件夹&#xff0c;在下面子文件夹 .metadata\.plugins\org.eclipse.core.runtime\.set…

Java 入门基础

程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为…

mysql query cache 关闭_为什么要关闭MySQL query cache-Fun言

MySQL的query cache大部分情况下其实只是鸡肋而已&#xff0c;建议全面禁用。当然了&#xff0c;或许在你的场景下还是挺好的&#xff0c;还能发挥作用&#xff0c;那就继续使用吧&#xff0c;把本文当做参考就好。不过&#xff0c;可能有的人人为只需要把 query_cache_size 大…

Java 基础之java运算符

运算符&#xff0c;顾名思义就是用于计算的符号。按功能分为&#xff1a;赋值运算符、算术运算符、关系运算符和逻辑运算符按操作数的个数分类&#xff1a;单目运算符、双目运算符、三目运算符运算符的目&#xff1a;运算符能连接操作数的个数称为运算符的目运算符的优先级&…

直流电机调速仿真作业

本次调速仿真采用PID调节。首先要确定PID中的各项设计参数&#xff0c;仿真过程中采用临界比例度法确定了大概的Kp值。在若干次调整的过程中&#xff0c;发现加入微分环节后调整时间略有上升&#xff0c;故采用PI调节。调整参数确定为Kp75,Ki22。控制器部分的程序如下图所示。原…

mysql any 效率_关于mysql的性能优化

1.用 show status like value 查询mysql数据库性能2. 用 EXPLAIN select * from table 或 DESCRIBE select * from table 查看执行计划3.使用索引--使用 like关键字时 like %le索引不起作用&#xff0c;但 like le%索引可以起作用-- 使用关键字or时要求两个字段必须同为索引…

存储指针

- (void)addObserver:(__weak NSObject *)observer forContext:(void *)context { NSValue *valueContext [NSValue valueWithPointer:context]; dispatch_sync(self.queue, ^{ [self.trampolines setObject:observer forKey:valueContext]; }); }转载于:https://www.cnblogs.…

Java运算符优先级和表达式及数据类型转换

计算机程序在处理数据时会进行大量的计算&#xff0c;而数据的运算则需要借助运算符和表达式来完成。表达式是指由操作数和运算符组成的用于完成某种运算功能的语句子表达式Y X * ( Z 10 ) 表达式 其中Y、X、Z、10 称为操作数&#xff0c;、*、 称为运算符。 在…

Bugtags 2016-06-16 更新内容

增加版本管理功能 随着版本的增多&#xff0c;有些历史的版本不再使用&#xff0c;可将这些版本隐藏起来。操作步骤如下&#xff1a;点击设置 - 版本管理&#xff08;管理员可见&#xff09;- 取消勾选需要隐藏的版本即可。隐藏版本后&#xff0c;版本筛选中将不会显示&#xf…

MYSQL描述选课系统的问题与_mysql+php实现选课系统中遇到的问题及解决方法

首先是一些mysql 的基本命令删除表格 drop ;约束条件 :primary key 设置为主键unique 值唯一not null 非空foreighn key(key_name) references(key_name) 设置外键 default 设置默认值auto_increment 一般用于设置编号&#xff0c;随着…

Java 基础(条件结构)

Java 程序流程控制结构 顺序结构: 条件结构: 循环结构: 单分支if结构 选择 结构又称为分支结构 。 当 程序执行到分支判断的语句时&#xff0c;首先判断条件&#xff0c;然后根据条件表达式的结果选择相应的语句执行 。 分支 结构包括单分支、双分支和多分支三种形式。 语法…