【发布时间】:2016-02-21 12:17:42
【问题描述】:
我编写了一段代码,用于查找等于所提供参数之一的连续总和。
#include <stdio.h>
#include <string.h>
int main()
{
//number of test case
int n;
int monfri[2];
scanf("%d",&n);
char res[n][3] ;
char yestok[3] = {"YES"};
int sum = 0;
int h = 0;
for(int i = 0 ; i < n; i++)
{
h=0;
//read no of friends and money
while (h < 2 && scanf("%d", &monfri[h]) == 1)
h++;
int fri[monfri[0]];
for(int j = 0; j < monfri[0]; j++)
scanf("%d",&fri[j]);
for(int k = 0; k < monfri[0] ; k++)
{
sum = 0;
for(int l=k+1; l<monfri[0]; l++)
{
sum = sum + fri[l - 1];
if(sum == monfri[1])
{
strcpy (res[i],yestok);
continue;
}
if(sum > monfri[i])
continue;
}
}
if(strcmp(res[i],yestok) != 0)
{
strcpy (res[i],"NO");
}
}
for(int d = 0; d < n ; d++)
{
puts(res[d]);
}
return 0;
}
提供相同的输入
2
5 12
2
3
4
5
6
3 15
2
2
2
这里的第一个输入代表我们案例中测试用例的编号,它是 2
下一个输入代表实际的数据数量和总和值。这里是它的
5 12
3 15
预期的输出应该是
YES
NO
但我得到了
YESNO
NO
我做错了什么。如果没有测试用例是 1,那么它工作正常。但在 2 个或更多测试用例中失败。
【问题讨论】:
-
你试过调试吗?这是一个直接的“请调试我的程序”问题。
-
@bolov 我试过了,但找不到。
strcmp和其他东西看起来都很好,条件也还可以。 -
至少调试会缩小你对错误来源的怀疑。