PICNIC 문제 해결이 잘안됩니다

  • Daniel1011
    Daniel1011

    PICNIC 문제를 며칠째 보고 있는데 제 알고리즘이 틀려서 일단 제시된 코드를 이용해서라도 실행을 시켜보려고 하고 있습니다.
    이 코드를 메인 함수에 불러서 실행시켜야 될거 같은데 감이 잘 오지 않습니다.
    코드는 다음과 같습니다.

    int n;
    bool areFriends[10][10];

    int countPairings(bool taken[10]){
    int firstFree = -1;
    int i, j;

    for(i=0; i<n; ++i){
        if(!taken[i]){
            firstFree = i;
            break;
        }
    }
    
    if(firstFree == -1)
        return 1;
    
    int ret=0;
    
    for(int pairWith = firstFree + 1; pairWith < n; ++pairWith)
        if(!taken[pairWith] && areFriends[firstFree][pairWith]){
            taken[i] = taken[j] = true;
            ret += countPairings(taken);
            taken[i] = taken[j] = false;
        }
    
        return ret;

    }


    9년 전
5개의 댓글이 있습니다.
  • pugas
    pugas

    if(!taken[pairWith] && areFriends[firstFree][pairWith]){
    taken[i] = taken[j] = true;
    ret += countPairings(taken);
    taken[i] = taken[j] = false;
    }
    이 부분 조금 이상한데요??


    9년 전 link
  • Kureyo
    Kureyo

    알고스팟 온라인 저지/첫 번째 문제 풀기를 참고하시면 될듯합니다


    9년 전 link
  • Daniel1011
    Daniel1011

    변수 3개를 =으로 한번에 처리한게 이상한건가요 아니면 로직에 문제가 있다고 말씀하시는건가요?


    9년 전 link
  • Daniel1011
    Daniel1011

    참고하라는 부분 조금 더 상세히 알려주실 수 있을까요


    9년 전 link
  • Being
    Being

    질문이 무엇인지 불명확해서 답변을 드릴 수 없습니다.


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