代码如下
#include <stdio.h>
int backtrack (int i,int n ,int c1,int now ,int best, int b[] )
{
if(i>n)
{
if(now>best)
{
best = now;
printf("%d",best);
return best;
}
}
if(now+b[i]<c1)
{
now=now+b[i];
backtrack(++i,n,c1,now,best,b[20]);
}
backtrack(++i,n,c1,now,best,b[20]);
}
int main()
{
int a[20],b[20];
int c1,c2,n,now,best,t;
printf("输入第一艘船载重\n");
scanf("%d",&c1);
printf("\n输入第二艘船载重\n");
scanf("%d",&c2);
printf("\n输入货物数量\n");
scanf("%d",&n);
for(int i=0;i<n;i++) //输入每个货物重量
{
printf("\n请输入第%d个货物重量\n",i);
scanf("%d",&b[i]);
}
int x = 0;
for(int i=0;i<=n;i++)//获取总重量
{
x= x+b[i];
}
if(x>c1+c2)
{
printf("输入有误,请重新输入");
return 0 ;
}
now = 0;
best = 0;
t = 0;
int i = 0;
t=backtrack(0,n,c1, now,best,b[20]);
printf("%d",t);
}
报错内容如下,这应该怎么解决啊

劳烦大家了!
本文探讨了一段C语言回溯算法代码的问题,该代码旨在通过递归方式寻找最佳装载方案,但遇到了运行错误。文章详细展示了代码实现过程,包括输入船只载重、货物数量及重量,以及使用递归函数进行装载策略的回溯搜索。然而,当前代码存在缺陷,未能正确处理装载逻辑,导致程序运行异常。作者寻求社区帮助,共同探讨问题根源并提供解决方案。

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



