有n個人過河,每個人重量weight不同,有船的最大載重為size(最多容納2人)
問所有人過河需要幾條船?
使用貪心演算法,先將體重從輕到重排列(冒泡),然後從最重的與最輕的相加,大於載重則一人乘一條船,小於等於載重則兩人乘坐一條船,依次如此得到船數.
#define _crt_secure_no_warnings
#include//氣泡排序
void bubble(int* data, int num)
} }}int main() ;
int i, j, sum = 0, count = 0;
printf("請輸入人數num 船的容量size:\n");
scanf("%d %d", &num, &size);
printf("請分別輸入每個人的重量:\n");
for (i = 0; i < num; ++i)
bubble(weight, num);
//兩個指標分別指向最重和最輕,最重的指標向前掃瞄
//與最前的相加,如果小於容量則船數+1,大於容量則容量直接+1,指標繼續向前
for (i = 0, j = num - 1; i <= j; j--)
++count;
} printf("共需要%d條船\n", count);
貪心過河問題
過河問題 時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述在漆黑的夜裡,n位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,n個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,n人所需要的時間已知 ...
貪心 過河問題
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 在漆黑的夜裡,n位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,n個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,n人所需要的時間已知 而如果兩...
貪心 過河問題
題目意思 每個人過河都有自己的過河時間,有n個人想過河,但只有乙隻小船,最多只能裝2個人,每一次過河,過河時間為用時最多的那人過河時間,如果還有人沒有過河,那麼過去乙個用時最少 的送回船。問n人過河最少要多少時間。分析 參考網上的思路 題意 也就是乙個坐船問題,一共有兩個策略 最快和次快過去,最快回...