문제 소풍 PICNIC이 해결되지않습니다. 시나브로 PICNIC 입력으로 예시들은 물론, 10 13 0 1 0 2 0 3 1 2 1 3 2 3 4 5 4 6 4 7 5 6 5 7 6 7 8 9 와 같은 예시도 넣어봤으나, 제 생각엔 정답이었습니다. 왜 틀렸는지 궁금합니다. 부탁드리겠습니다! #include <iostream> #include <vector> #include <algorithm> #include <cstring> using namespace std; bool Pairing [10][10]; bool Taken [10]; int Pair_number; int Student_number=0; //매칭함수 int matching (bool Taken [10]) { int First_student =0; bool finished = true ; for(int a =0; a<Student_number; ++a) { if(Taken[a]==0) { First_student =a; finished = false ; break;} } if(finished == true) {return 1;} //기저완료 int Pairing_number =0; for(int Second_student = First_student+1; Second_student < Student_number; ++Second_student) { if((Taken[Second_student]==0) && (Taken[First_student]==0) && (Pairing[First_student][Second_student]==1)) { Taken[Second_student]=1; Taken[First_student]=1; Pairing_number += matching(Taken); Taken[Second_student]=0; Taken[First_student]=0; } } return Pairing_number; } //메인함수 int main () { memset(Pairing,0,sizeof(Pairing)); memset(Taken,0,sizeof(Taken)); int C,i,j; cin>>C; while(C--) { cin>>Student_number>>Pair_number; while(Pair_number--) {cin>>i>>j; Pairing[i][j]=1; Pairing[j][i]=1; } //함수 cout<<matching(Taken)<<endl; } return 0; } } 5년 전
2개의 댓글이 있습니다. Corea 매 테스트케이스마다 Pairing, Taken 변수를 초기화해주셔야 할 것 같아요. 5년 전 link 시나브로 정말 감사합니다!! 5년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
시나브로
PICNIC
입력으로 예시들은 물론,
10 13
0 1 0 2 0 3 1 2 1 3 2 3 4 5 4 6 4 7 5 6 5 7 6 7 8 9
와 같은 예시도 넣어봤으나, 제 생각엔 정답이었습니다.
왜 틀렸는지 궁금합니다.
부탁드리겠습니다!
5년 전