c语言,贪心算法
2. 独木舟上的旅行:请写一个程序,读入独木舟的最大承载量、旅客的数目和每位旅客的重量。根据给出的规则,计算要安置所以旅客所必须的最少的独木舟条数。规则:1。独木舟只能坐2人
2.乘客总重量不能超过独木舟的最大承载量
自己输入最大承载量和旅客数。
程序代码:/* 考虑体重实际情况 */
#include <stdio.h>
#define N 10
void sort ( float a[], int n)
{
int i, j;
float temp;
for ( i = 0; i < n -1; i ++)
for ( j = 0; j < n - i -1; j++)
if ( a[j] > a[j + 1] )
temp = a[j], a[j] = a[j + 1], a[j + 1] =temp;
}
main ()
{
float a[N], zz;
int i, j, count = 0;
printf ("Please input weights:");
for ( i = 0; i < N; i ++)
scanf ("%f",&a[i]);
sort ( a, N);
printf ("Input max weight:");
scanf("%f",&zz);
for ( i = 0, j = N -1; i <= j; )/* 将最小体重与最大匹配,判断其是否符合条件,否则将最小与次大比较 */
if ( a[i] + a[j] <= zz)
{++ count; ++ i; -- j;}
else
{++ count; -- j;}
printf ("Need: %d\t",count);
getch ();
return 0;
}