過河問題 貪心

2021-09-22 02:17:52 字數 796 閱讀 9266

有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人過河最少要多少時間。分析 參考網上的思路 題意 也就是乙個坐船問題,一共有兩個策略 最快和次快過去,最快回...