BRAVEDUCK 질문입니다.

  • ksh92315
    ksh92315
    #include<stdio.h>
    #include<math.h>
    
    double distance(int a,int b, int c,int d){
        float e=0.0;
        double f=0.0;
        e=(float)(c-a)*(c-a)+(d-b)*(d-b);
        f=sqrt(e);
        return f;
    }
    int distinguish(int J,int start_x,int start_y,int end_x,int end_y,int stone[50][50]){
    
        int i,j,a=0;
    
        for(i=start_x;i<50;i++){
            for(j=start_y;j<50;j++){
                if(stone[i][j]==1){
    
                    if(J>=distance(start_x,start_y,i,j)&&(i!=start_x||j!=start_y)){                 
                        a=distinguish(J,i,j,end_x,end_y,stone);
                    }
                    if(J>distance(start_x,start_y,end_x,end_y))
    
                        return 1;
                }
            }
        }
        return a;
    }
    int main(){
    
        int test=0,x,y,stone_count=0,i[10]={0,},k,j=0;
        int J=0;
        int start_x,start_y;
        int end_x,end_y;
        int stone[50][50]={0,};
    
        scanf("%d",&test);
        for(k=0;k<test;k++){
    
            scanf("%d",&J);
            scanf("%d %d",&start_x,&start_y);
            scanf("%d %d",&end_x,&end_y);
            scanf("%d",&stone_count);
            while(j++<stone_count){
                scanf("%d %d",&x,&y);
                stone[x][y]=1;
            }
            j=0;
            i[k]=distinguish(J,start_x,start_y,end_x,end_y,stone);
    
    
        }
        for(k=0;k<test;k++)
            if(i[k]==1)
                printf("YES\n");
            else if(i[k]==0)
                printf("NO\n");
        return 0;
    }
    

    BRAVEDUCK

    DFS알고리즘을 사용하여 풀었는데 비주얼로 실행했을때는 잘되는데

    RTE (SIGSEGV: segmentation fault, probably incorrect memory

    access or stack overflow)

    답안결과는 이 런타임오류가 뜹니다.. 도대체 어디가 문제인지 알수있을까요?


    9년 전
2개의 댓글이 있습니다.
  • jseo
    jseo

    일단은 x, y 둘다 음수일 수 있습니다.


    9년 전 link
  • ksh92315
    ksh92315

    아;; 엄청난 실수를 저질럿네요 ;; 감사합니다


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.