
一道贪心题,按照题目的意思,应该尽量把船坐满,所以从最后一位乘客开始找和最后一名乘客体重之和仍小于等于最大负重的乘客,那么直接上代码。
#include <stdio.h>
int p[1000], ans, n, m;
int main() {
int i, j;
scanf("%d %d", &n, &m);
for( i = 1; i <= m; i++ ) scanf("%d", &p[i]);
i = 1; j = m;
while(i <= j) {
if(i == j) {
ans += 10;
break;
}
if(p[i]+p[j] <= n) {
i++; j--;
ans += 10;
}
else {
j--;
ans += 10;
}
}
printf("%d\n", ans);
return 0;
}
本文介绍了一道经典的贪心算法题目——渡河问题。通过寻找最优方式让乘客们利用有限的船只渡过河流,文章详细展示了如何使用C语言实现这一算法。核心思路是从最重的乘客开始匹配,尽可能地使每次航行都能充分利用船只的最大承载能力。

被折叠的 条评论
为什么被折叠?



