首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试用例中的故障分割

测试用例中的故障分割
EN

Stack Overflow用户
提问于 2016-01-26 09:33:17
回答 2查看 1.1K关注 0票数 0

因此,问题是:给定任何整数数组(相当大),返回数组中任意两个元素之间的最大差异,这样较大的元素出现在比较小的元素更高的索引处。返回-1,如果找不到这样的对。示例:

7 2 3 10 2 4 8 1

其中第一个元素是数组的大小(或输入的行数),其余的是元素。以上样品输出为8(10-2)。

我的代码如下:

代码语言:javascript
运行
复制
int A[20],size;

scanf("%d",&size);
for(int i=0;i<size;i++){
scanf("%d\n",&A[i]);
}
int diff = A[1]-A[0];
int currsum = diff;
int maxsum = currsum;

for(int i=1; i<size-1; i++)
{
    // Calculate current difference for the loop
    diff = A[i+1]-A[i];

    // Calculate current sum for the loop
    if (currsum > 0)
       currsum += diff;
    else
       currsum = diff;

    // Update max sum(if needed)
    if (currsum > maxsum)
       maxsum = currsum;
}

printf("%d",maxsum);

这是来自Hackerrank的一个问题,但在10个可能的测试案例中,它只运行了三个。其余的情况返回一个分割错误。任何想法都会有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-26 09:57:33

正如注释中提到的,您已经声明A仅包含20个整数。但这个问题最多可以产生1,000,000个整数。这就是错误!

票数 1
EN

Stack Overflow用户

发布于 2016-01-26 10:17:31

使用指针使这更重要。首先将A声明为整数指针,然后读取数组的第一个元素,使用这个整数,您可以为数组A动态分配内存(malloc()calloc()函数)。因此,A的大小将是动态的,您可以在第一个元素的函数中调整它的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35010671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档