日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小明一家过桥_【练习】用python解决小明一家过桥问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

import random

list1=[] #存放所有遍歷的結(jié)果

#等待過橋的人員

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

#過橋后的人員

bridge2={}

#判斷未過橋的人是否空了(全部過完后,程序停止,看總共用了多長時間)

len1=len(bridge1)

print(len1)

#while True:

print('初始情況:當(dāng)前未過橋的人是:',end=' ')

print(bridge1)

print('初始情況:當(dāng)前已過橋的人是:', end=' ')

print(bridge2)

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

#一次while,就完成一次一家人完整的過河流程;一次fow,就完成一次過河和回來的過程(2個人過河,一個人回來)

while True:

for i in range(1,10):

print('第%d次過橋和回來的過程如下:' % i)

#隨機(jī)從未過橋的人員中取一個人出來(key),取出來是一個字符串型的數(shù)據(jù)

p1=random.choice(list(bridge1))

print(p1+'準(zhǔn)備過橋')

#print(type(p1))

#取出后,將這個人對應(yīng)的過橋時間取出來(value),取出來是一個整數(shù)型的數(shù)據(jù)

print(p1+'的時間為'+str(bridge1[p1]))

#print(type(bridge1[p1]))

time1=bridge1[p1] #將第一個人的所用時間存起來,用于后面比較取大值

#取出第一個人后,把這個人賦值給已過河的人,并且從未過河的人群中刪除

bridge2[p1]=bridge1[p1]

del bridge1[p1]

print(bridge1)

#print('準(zhǔn)備過橋:', end=' ')

#print(bridge2)

#同理,再從未過橋的人隨機(jī)取一個人和對應(yīng)的時間。此時發(fā)現(xiàn)一個問題,有可能和前一次取的人一樣,所以前面應(yīng)該取一次,刪一次。

p2=random.choice(list(bridge1))

print(p2+'準(zhǔn)備過橋', 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('當(dāng)前未過橋的人是:',end=' ')

print(bridge1)

print('當(dāng)前已過橋:', end=' ')

print(bridge2)

#如果都過完河了,就沒必要再返回啦!所以終止!

if len(bridge1)==0:

print('最終總時長為:%d' % total_time)

break

#print('當(dāng)前剩余時間為:%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('當(dāng)前已過橋:', end=' ')

print(bridge2)

print('當(dāng)前未過橋:', end=' ')

print(bridge1)

total_time = total_time+time4

print('當(dāng)前總花費(fèi)時間:%d' % total_time)

##記錄下這一輪完整過橋的時間

list1.append(total_time)

#print(list1)

if total_time<=30:

break

#執(zhí)行完一輪之后,重新恢復(fù)初始狀態(tài),再跑一輪

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

bridge2={}

total_time=0

list1.sort()

print(list1)

運(yùn)行結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的小明一家过桥_【练习】用python解决小明一家过桥问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。