問題如下:四個女人過橋,夜間有一火把,每次最多過兩個,必需帶火把,過橋速度不一樣,分別為
兩個人過用最慢乙個的速度,火把不能扔,如何在17min內四個女人都過橋?
這個問題其實園子裡已經有解決方案了 也討論了多次 不過呢 很多只有思路 原始碼也不夠詳細 於是 我再演繹一下 歸納總結一下
其實是很簡單的 返回永遠最多返回乙個 所以返回肯定是取已經過橋的人中時間最短的那乙個
那麼過橋呢 過橋的話 要麼取時間最短的兩個(最快速) 要麼取最慢的兩個(最不浪費快的那個人的時間) 而取最慢的兩個過橋的前提是:已經過橋的人中,存在乙個人,速度比未過橋的人快 (其實這個人 永遠就是no.2 因為no.2永遠和no.1一起過橋 而no.1永遠是優先回來) 這樣 所浪費的時間是最少 也就是最優的過橋方案
原始碼:view code
1internal
class
women231
}32///33
///是否已完成過橋
34///
35private
bool
iscomplete
3641}42
///43
///開始過橋
44///
45///
46public
string
startgapbridge()
4774}75
else
7695}96
}97}98
return msg + "
共用時:
" +sumtime;99}
100101
///102
///是否右邊女人的速度有比左邊快的
103///
104///
105private
bool
isrightwomenlessleft()
106115
}116
}117
return
false
;118
}119
120 }
view code
1ps:我本來想上傳打包原始碼 發現找不到上傳按鈕...static
void main(string
args)
2
所有車的過橋最短時間
今晚幫朋友助攻遇到了一道題,當時有思路但是沒有寫出來,後來結合牛客網上的解答寫了出來,也不知道具體能ac多少道題,先放在這裡等大家指點吧 有n輛車藥陸續通過一座最大承重為w的橋,其中第i輛車的重量為w i 通過橋的時間為t i 要求第i輛車上橋的時間不早於第i 1輛車上橋的時間,任意時刻橋上所有車輛...
最短時間(Dijistra)
時間限制 500ms 記憶體限制 100m 最短時間 描述 夢工廠有 n 個分廠 從 1 開始編號 有m對分廠通過雙向鐵路相連。為了保證每兩個分廠之間的同學可以方便地進行交流,掌舵人張老師就在那些沒有鐵路連線的分廠之間建造了公路。在兩個直接通過公路或鐵路相連的分廠之間移動,需要花費 1 小時。現在菜...
最短路 dijkstra求最短時間)
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...