c语言子集和问题

#include<stdio.h>#defineN6intW[N];intM;voidsumofsub(ints,intk,intr){intx[N];x[k]=1;if... #include <stdio.h>
#define N 6

int W[N];
int M;

void sumofsub(int s,int k,int r)
{
int x[N];

x[k]=1;
if(s+W[k]==M)
{
for(int i=0;i<N;i++)
printf("%3d",W[k]);
}
else
{
if(s+W[k]+W[k+1]<=M)
sumofsub(s+W[k],k+1,r-W[k]);
if(s+r-W[k]>=M&&s+W[k+1]<=M)
{
x[k]=0;
sumofsub(s,k+1,r-W[k]);
}
}

}
void main()
{
int i,r0=0;
int s0=0;
int k0=0;
printf("Please input an array of %d integer(ASC):\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&W[i]);
}
printf("The array you input is: ");
for(i=0;i<N;i++)
{
printf("%3d",W[i]);
}
for(i=0;i<N;i++)
{
r0+=W[i];
}
printf("\n");
printf("Plese input the sum you like:");
scanf("%d",&M);
printf("\n");
printf("The sumofsub you want is:\n");
sumofsub(s0,k0,r0);
printf("\n");

}

运行后的输出结果 不对 大家帮帮忙
就是输入一个非降序的整形数组,自己定义一个整形数值,例如
数组为:5,10,12,13,15,18 定义的M=30 输出数组中加起来刚好等于30 的数字
展开
 我来答
人生多问
2009-11-01 · TA获得超过443个赞
知道小有建树答主
回答量:767
采纳率:100%
帮助的人:422万
展开全部
我大概明白你的意思了,不过还有细节你没有说清楚:
1、是从头到尾扫描还是随意组合数字?
2、是两个数字的和还是任意个?

你的程序在我看来很混乱,我看不明白,如果不介意,请说清楚以上细节,我帮你重写一个。

为了你来之不易的80分,请多点耐心。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式