
已解决问题
谷歌执着gg用户在2020.11.03提交了关于“许魏洲c语言编程求找错误!”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-06T11:13:57。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !
详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !
按照你的问题:
从编程角度看你的代码
一、有5个砝码重量和5个砝码数量,那
二、逻辑上,可将
三、扩展讲,
四、结果数组可以定
下面是代码(我演示代码所
#include<stdio.h>
#
#defineM1000//组合的最大数量
intmain
{
intsum
inti,wets[N]={1,2,5,10,15,
inta[N],cnt=0,n=0;
for(i=0,print
f
for(a[1]=0;a[1]<=**ms[1];a[1]++
for(a[2]=0;a[2]<=**ms[
for(a[3]=0;a[3]<=
for(a[4]=0;a[4]<=**ms[4];a[4]++)
for(a[5]=0;a[5]<=**ms[5];a[5]++)
{
cnt++;
printf("个数的组合%d:%d,%d,%d,%d,%d,%d",n++,a[0],a[1],a[2],a[3],a[4],a[5]);//测试用,打印给你看,可注释掉
for(i=0,sTemp=0;i<N;sTemp+=a[i]*wets[i],i++);
printf("(总重量%d)\n",sTemp);//测试用,打印给你看,可注释掉
for(i=0,flag=0;i<len;i++)//与结果数组对比
if(sums[i]==sTemp)
{
flag=1;//发现有重复记录,标识置1
bre**;
}
if(flag)cnt--;//用重复,当前组合结果放弃,不记录
else
{
sums[len]=sTemp;//不重复,记录当前组合结果
len++;
}
}
printf("其中**有%d种不同组合\n",cnt);
for(i=0,printf("总重量分别为:");i<cnt;printf("%d",sums[i]),i++);//测试用,打印给你看,可注释掉
return0;
}