gpt4 book ai didi

C代码在ideone上运行良好,但在spoj中得到WA

转载 作者:行者123 更新时间:2023-11-30 15:32:12 24 4
gpt4 key购买 nike

http://www.spoj.com/problems/MORENA/对于测试用例,在 spoj 中获取 WA,在 ideone 上运行良好。任何想法?早些时候我用java写了这个,得到了NZEC。然后用 C 写了这个。

#include<stdio.h>

int main(){

int n,i;
scanf("%d",&n);
long num[n];
for(i=0;i<n;i++){
scanf("%ld",&num[i]);
}

int flag;
int l;
for(l=0;l<n;l++){
if(num[l+1] > num[l]){
flag = 1;
break;
}
else if(num[l+1] < num[l]){
flag = 0;
break;
}
}
int count = 1,k;

for(k =0; k<n-1; k++){
if(flag){
if (num[k+1] > num[k]){
count++;
flag = 0;
}
else if(num[k+1]==num[k]){
flag = 1;
}
else if(num[k+1]<num[k]){
//count++;
flag=1;
}
}
else{
if(num[k+1] < num[k]){
count++;
flag = 1;
}
else if(num[k+1]==num[k]){
flag = 0;
}
else if(num[k+1]>num[k]){
//count++;
flag = 0;
}
}
}

printf("%d",count);
return 0;
}

最佳答案

等等,这里有很多问题。首先是以下几个:

  int n,i;
scanf("%d",&n);
long num[n];

不可能(或者至少不应该)声明某个变量大小的数组,请使用 malloc()为此:

long* num = malloc(sizeof(long)*n);

另一个问题是,您在第一个循环中跨越了数组的边界,这很奇怪,因为您在第二个循环中处理了它:P只需更改:for(l = 0 ; l < n ; l++)for(l = 0 ; l < n-1 ; l++)就像在 IF 语句中一样,您使用数组 l+1 元素,当 l 为 n-1 时,您实际上测试了 n-1 元素与第 N 个元素 - 它不在数组的边界中。除此之外,代码看起来还不错。

关于C代码在ideone上运行良好,但在spoj中得到WA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24348476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com