(用c++語言表達)有四個人夜間過一座獨木橋,而這座獨木橋一次最多允許兩人同時通過,
題目:
(用c++語言表達)有四個人夜間過一座獨木橋,而這座獨木橋一次最多允許兩人同時通過,
他們只有一隻手電筒.而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去.兩人同行時以較慢者的速度為準,四人過橋時間分別是1分、2分、5分和10分.求最短時間,(1)1分鐘的和2分鐘的先過橋,1分鐘的回來,(此時共耗時3分鐘),(2)5分鐘的和10分鐘的過橋,2分鐘的回來(共耗時2+1+10+2=15分鐘),(3)1分鐘的和2分鐘的過橋(共耗時2+1+10+2+2=17分鐘),共耗時17分鐘. 求用c++語言表達並得出17~
解答:
#include <iostream>
#include <iomanip>
using namespace std;
struct person {
char name[10];
int ptime;
};
// 按過橋時間從小到大排序
void Sort(struct person a[],int n) {
int i,j,k;
struct person aone;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j) {
if(a[k].ptime > a[j].ptime)
k = j;
}
if(i != k) {
aone = a[k];
a[k] = a[i];
a[i] = aone;
}
}
}
int main() {
struct person a[] = {{"John",12},{"Park",3},{"Mike",9},{"Doson",6},{"Jodan",10}};
int n = sizeof(a) / sizeof(a[0]);
int i,ttime = 0;
Sort(a,n);
for(i = 1; i < n; ++i)
ttime += 2 * a[0].ptime + a[i].ptime;
ttime -= a[0].ptime;
cout << "共需時間: " << ttime << "分!\n";
return 0;
}
- 上一篇 要修改病句,縮句,擴句,擬人句各60句,不能重複.
- 下一篇 我們的老師真辛苦 擴句
添加新評論