5
社区成员
发帖
与我相关
我的任务
分享源代码:
#include<stdio.h>
#include<algorithm>
int main()
{
int c=25;//船载重量
int w[5]={5,5,5,5,5};//古董重量数组
std::sort(w,w+5);//默认将w数组按从小到大排序
int sum,n=0;//最大数量
for(int i=0;i<5;i++)
{
if(sum>c) break;
sum+=w[i];
n++;
printf("sum=%d,count=%d\n",sum,n);
}
printf("最大装载数量是:%d",n-1);
return 0;
}
测试样例:

答案明显错误。
错误原因是在sum=c时,输出的结果不能是n-1
printf("最大装载数量是:%d",n-1);
需要加一个判断:
#include<stdio.h>
#include<algorithm>
int main()
{
int c=25;//船载重量
int w[5]={1,1,1,1,1};//古董重量数组
std::sort(w,w+5);//默认将w数组按从小到大排序
int sum,n=0;//最大数量
for(int i=0;i<5;i++)
{
if(sum>c) break;
sum+=w[i];
n++;
printf("sum=%d,count=%d\n",sum,n);
}
if(sum>c){
printf("最大装载数量是:%d",n-1);
}else if(sum<=c)
{
printf("最大装载数量是:%d",n);
}
return 0;
}
输出结果:
