杭电1258,求助,一直wa,不知道哪里错了

#include<stdio.h>#include<stdlib.h>intcmp(constint*a,constint*b){return*(int*)b-*(int... #include<stdio.h>
#include<stdlib.h>
int cmp(const int *a,const int *b)
{
return *(int *)b-*(int *)a;
}
long a[12],b[12],d[12],n,t,flag,flag1;
void dfs(long i,long j,long c)
{
long x;
if(c+a[i]==t)
{
flag=1;
if(b[j]!=a[i])
{
b[j]=a[i];
for(x=0;x<j;x++)
printf("%ld+",b[x]);
for(x=0;x<j;x++)
d[x]=b[x];
printf("%ld\n",a[i]);
}
else
{
b[j]=a[i];
for(x=0,flag1=0;x<j;x++)
if(d[x]!=b[x])
{
flag1=1;
}
if(flag1==1)
{
for(x=0;x<j;x++)
printf("%ld+",b[x]);
for(x=0;x<j;x++)
d[x]=b[x];
printf("%ld\n",a[i]);
}
}
if(i+1<n)
dfs(i+1,j,c);
}
else if(c+a[i]>t&&i+1<n)
{
dfs(i+1,j,c);
}
else if(c+a[i]<t&&i+1<n)
{
if(j==0&&a[j]!=b[j])
{
b[j]=a[i];
dfs(i+1,j+1,c+a[i]);
}
else if(b[j]!=a[i])
{
b[j]=a[i];
dfs(i+1,j+1,c+a[i]);
}
else
{
for(x=0,flag1=0;x<j;x++)
if(d[x]!=b[x])
{
flag1=1;
}
if(flag1==1)
{
b[j]=a[i];
dfs(i+1,j+1,c+a[i]);
}
}
dfs(i+1,j,c);
}
}

int main()
{
long i,j;
while(scanf("%ld%ld",&t,&n)!=EOF&&(t!=0||n!=0))
{
for(i=0;i<12;i++)
b[i]=0;
for(i=0;i<n;i++)
scanf("%ld",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
printf("Sums of %ld:\n",t);
flag=0;
dfs(0,0,0);
if(flag==0)
{
printf("NONE\n");
}
}
return 0;
}
展开
 我来答
划痕精致
2013-07-13 · 超过16用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:44.9万
展开全部
建议将BOF改为0
追问
这回答。。。
追答
scanf返回值是整形,你需要的EOF不是0么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式