picnic 문제 질문합니다

  • yhb
    yhb
    #include<stdio.h>
    int students, rela[10][10], isPair[10], count = 0;
    
    int pat() {
        int i, first = -1;
        for (i = 0; i < students; i++) {
            if (isPair[i] == 0) {
                first = i;
                break;
            }
        }
        if (first == -1) {
            count++;
            return 0;
        }
        for (i = first + 1; i < students; i++) {
            if (isPair[i] == 0) {
                if (rela[first][i] == 1) {
                    isPair[first] = 1;
                    isPair[i] = 1;
                    pat();
                    isPair[i] = 0; isPair[first] = 0;
                }
            }
        }
        return 0;
    }
    int main() {
        int i, j, a, b, pairs, q, nn;
        scanf("%d", &nn);
        for (q = 0; q < nn; q++) {
            count = 0;
            scanf("%d %d", &students, &pairs);
            for (i = 0; i < pairs; i++)
                isPair[i] = 0;
            for (i = 0; i < pairs; i++)
                for (j = 0; j < pairs; j++)
                    rela[i][j] = 0;
    
            for (i = 0; i < pairs; i++) {
                scanf("%d %d", &a, &b);
                rela[a][b] = 1;
                rela[b][a] = 1;
            }
            pat();
            printf("%d\n", count);
        }
    }
    

    알고리즘 문제해결전략 책을 풀고 있는데 c++로 된 코드를 제 나름대로 c로 바꿔봤는데 오답이 나오네요 예제는 잘 실행이 되는데
    어떤 값을 넣었을때 오류인지 잘 몰라서 어느 부분이 틀린지 잘 모르겠습니다 ㅠㅠ


    6년 전
2개의 댓글이 있습니다.
  • seico75
    seico75

    isPair 와 rela 는 학생수와 관련이 있고, 입력에서 주어진 pair 수는 관련이 없어 보입니다.


    6년 전 link
  • yhb
    yhb

    seico75님 아 감사합니다 이런실수를하다니..ㅠ 감사합니다!


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