2014-06-22 2 views
0

http://www.spoj.com/problems/MORENA/ 인 경우, 테스트 케이스의 경우 ideone에서 정상적으로 실행 중입니다. 어떤 생각? 이전에 자바로 작성한 NZEC을 얻고있었습니다. 다음 C에서 이것을 썼습니다.C 코드가 ideone에서 정상적으로 실행되지만 코드가

#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; 
} 
+7

"WA"와 "NZEC"의 의미를 모두가 알고 있다고 가정하지 마십시오. 나는 확실히하지 않는다. –

+3

미니 SPOJ 용어집 : SPOJ : Sphere 온라인 판사 (프로그래밍 문제/퍼즐/컨테스트 사이트), WA : 틀린 대답, NZEC : 0이 아닌 종료 코드, TLE : 제한 시간 초과 –

+4

@MichaelBurr : 질문에 편집하는 것이 좋습니다 . –

답변

1

여기에 많은 문제가 있습니다. 여기 먼저, 몇 가지 :

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

불가능 (또는 적어도 가능한 것으로 생각되지 않음), 특정 변수의 크기 배열을 선언 그렇게함으로써 그것을위한 malloc()를 사용 : 그냥 변경 P : for(l = 0 ; l < n ; l++)for(l = 0 ; l < n-1 ; l++)에 IF 같이

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

또 다른 문제는, 당신은 당신이 두 번째에서의 처리했다 때문에 이상한 첫 번째 루프에서 배열의 경계를 교차한다는 것입니다 명령문은 배열 l + 1 요소를 사용하고, l이 n-1 일 때 실제로 n 번째 요소를 테스트합니다. 1 원소가 배열의 경계에 있지 않은 N 번째 원소와 비교된다. 그 외의 코드는 괜찮아 보입니다.

+0

VLA는 C99부터 사용할 수 있지만, explitcitly -std = c99'를 지정해야합니다. –

+0

Lu'u - 알아요.하지만 원래 컴파일러에서는 올바르지 않습니다. t는 --std = c99를 지정해야 함) 어떤 사이트가 어떤 사이트를 실행하는지 확신 할 수 없습니다. –

+0

예, 컴파일러와 컴파일 플래그를 정확히 모르는 경우 아무 것도 예상 할 수 없습니다. 보장되는 것만 사용하는 것이 좋습니다. –

0

질문에 강한 채권이 competitive programming입니다. 대개 표시되는 문제가 있으며 사용자는 online judge 및 그 중 하나 인 SPOJ에 대해 테스트 된 입력에 대한 예상 출력을 제공하는 코드를 제출해야합니다. 실제로 샘플 입력과 샘플 출력이 거의 모든 문제를 표시합니다. 따라서 코드는 ideone에 문제의 샘플 입력에 대한 샘플 출력과 동일한 출력을 제공하지만 온라인 판단에서 엄청난 양의 데이터를 테스트하므로 NZEC이됩니다.

관련 문제