首页 > 代码库 > C(3)
C(3)
多次运用循环,条件语句,定义数组,排序
旅行团需要租帆船进行冒险活动,一条帆船最多乘坐两人,且乘客的总重量不能超过帆船的最大载重。为尽可能的减少活动花销,你要找出最少帆船条数。现写一个程序,输入帆船的最大载重(应大于旅客中最大重量)、旅客数量和每位旅客的重量,求出最少所需的帆船数。
#include<stdio.h>
main()
{
static int w,n,r,p,m,max,min;
static int a[300],i,j,t,k;
printf("以空格间隔,输入帆船对大承载量(80<=w<=200)和参与人数(1<=n<=300):");
scanf("%d %d",&w,&n);
printf("\n自动生成参与者的重量:\n");
for(i=0;i<=n-1;i++)
{
a[i]=rand()%(130-30+1)+30;
printf("%4d",a[i]);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
for(i=0;i<n-1;i++)
for(j=0;j<n-(i+1);j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0;j<n;j++)
{
printf("%4d",a[j]);
if((j+1)%10==0)
printf("\n");
}
printf("\n");
j=0;
i=n-1;
for(m=1;m<=n;m++)
{
max=a[i];
min=a[j];
if(max+min<=w)
{
i--;
j++;
k++;
}
else
{
i--;
k++;
}
if(i<=j)break;
}
printf("\n总共需要%d只帆船\n",k);
}
没能实现输出全部组合
C(3)