小明一家过桥_【练习】用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,一经查实,立即删除!

相关文章

WGZX:javaScript 学习心得--1

标签&#xff1a; javascriptiframedreamweaver浏览器htmltable2008-09-11 10:50 1071人阅读 评论(0) 收藏 举报分类&#xff1a;UI&#xff08;21&#xff09; 1&#xff0c;document.getElementById方法只能获取到一个对象&#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 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。控制器部分的程序如下图所示。原…

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

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

Bugtags 2016-06-16 更新内容

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

直通车运营系统优化之账户结构设置

国庆期间&#xff0c;小2哥我好好的享受了好几天的日子&#xff0c;说实话&#xff0c;自从做了淘宝&#xff0c;就很少像这期间一样好好的享受了这段日子 。做淘宝有时候真的很苦逼&#xff0c;每天的工作时间比一个打工的还长&#xff0c;熬夜到凌晨才睡也是家常便饭&#xf…

深度学习代码练习

代码下载地址&#xff1a;https://github.com/daijifeng001/R-FCN 对应论文&#xff1a;Object Detection via Region-based Fully Convolutional Networks 1、代码里面给的数据库下载链接失效&#xff0c;需要去代码下载主页最下方给定的资源区下载。 2、按照要求一步一步运行…

rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

概述之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较&#xff0c;今天主要对rabbitMQ的一些方面做扩展。01消息队列Broker&#xff1a;简单来说就是消息队列服务器实体。Exchange&#xff1a;消息交换机&#xff0c;它指定消息按什么规则&#xff0c;路由到哪个队…

mysql所有版本介绍_mysql各个版本介绍

一、版本说明&#xff1a;MYSQL自从被ORCLE收购后&#xff0c;软件的版本也ORACLE化&#xff0c;整体的感觉就是服务的费用提高了很多&#xff0c;整体的软件的Supports也有相应的提高&#xff1b;MYSQL根据软件的功能可以分成三个版本&#xff1a;社区版、企业版、集群版。社区…

d3js mysql_D3js技术文档 可视化展现

转载请注明http://www.cnblogs.com/juandx/articles/3885220.htmlD3js技术文档概述D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. For example, you can use D3 to generate an HTML …

text-indent的用法

一、text-indent应用于块级元素 <style type"text/css">*{margin:0;padding:0;}body{font-size:12px;color:#333;}p{text-indent:2em;background-color:#f00;color:#fff;}</style> </head> <body><p>携程旅行网携程旅行网携程旅行网携…

kettle连接mysql教程_kettle 连接 mysql8

kettle默认使用的是org.gjt.mm.mysql.Driver&#xff0c;而mysql 8.0以上connector已经不再支持这个包名;即使将mysql-connector-java-8.0.xx.jar包拷贝到data-integration/lib目录下&#xff0c;还是报错找不到驱动;所以要用jndi方法配置kettle&#xff0c;用com.mysql.cj.jdb…

小白学数据分析--留存率使用的窘境

小白学数据分析--留存率使用的窘境 随着移动游戏整体的火热&#xff0c;现在看到太多的数据&#xff0c;太多信息&#xff0c;很多时候我们仰慕和钦佩别人的成功&#xff0c;我们总是把这个行业达成所谓共识的一些数据来出来说明问题。因为我们笃信数据是有力的证据&#xff0c…

用groovy采集网页数据

首先&#xff0c;用 http://groovyconsole.appspot.com/ 测试下面的代码&#xff0c;发现引用总是失败. 下载了GGTS&#xff1a; https://spring.io/tools/ggts 测试成功&#xff1a; Grapes( Grab(grouporg.ccil.cowan.tagsoup, moduletagsoup, version1.2) )import org.ccil…

vue 时间回显 格式化_VSCode 开发Vue必备插件

1。Vetur —— 语法高亮、智能感知、Emmet等包含格式化功能&#xff0c; AltShiftF &#xff08;格式化全文&#xff09;&#xff0c;CtrlK CtrlF&#xff08;格式化选中代码&#xff0c;两个Ctrl需要同时按着&#xff09;2。EsLint —— 语法纠错3。Debugger for Chrome —— …

公司消费一卡通“变法”记

一卡通在每家公司都存在&#xff0c;不仅含考勤机&#xff0c;还会有门禁&#xff0c;订餐&#xff0c;食堂消费等。我们公司采用的是厦门舒特科技的一卡通系统&#xff0c;前后用了好几年了。 在我之前&#xff0c;一卡通的功能主要启用了考勤和消费这两大模块。 1、考勤机是每…

eslint不报错 vue_2-2【微信小程序全栈开发课程】index页面搭建--ESlint格式错误

1、修改入口文件也就是src/pages/index/main.js文件main.js是入口文件&#xff0c;通过main.js来加载index.vue文件。每个页面文件夹中都要有main.js文件//加载vue组件和index.vue文件 import Vue from vue import App from ./index//新建一个index页面的Vue实例 const app ne…

python弹出另一个窗口_Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法

1.先使用Qt designer设计两个窗口&#xff0c;一个是主窗口&#xff0c;一个是子窗口其中主窗口是新建-Main Window,子窗口是Dialog窗体。两个窗口不能是同一类型,否则会崩溃。并保存为EyeTracking_main.ui和EyeTracking_process.ui(因为我在做眼动追踪&#xff0c;因此窗体命名…