对于 [CK005加勒比海盗船-最优装载问] 代码的修正

代码骑士 代码骑士 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

源代码:

#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;
} 

输出结果:

 

...全文
评论
收藏 已收藏
分享
返回顶部
代码骑士
代码骑士 优质创作者: 游戏开发技术领域 优质创作者: 游戏开发技术领域
代码骑士学算法社区 5 成员 44 内容