#include <iostream>#include <string.h>usingnamespacestd;boolstudentArr[10];// 1번 학생이 짝이 되면 1번은 1 2 번은 원래 0이고 boolareFriend[10][10];intstuNum;//학생수intmatchNum;//짝의 수intanswer=0;//정답intcountanswer(){intfirstNum=-1;//가장 처음이 비어있다는것을 의미for(inti=0;i<stuNum;i++){if(studentArr[i]==0){//학생수 만큼의 배열이 비어있으면 그 숫자가 비어있는 첫번쨰 순서가됨firstNum=i;//즉 시작 기준이 된다는말 (재귀의 기준)break;}}if(firstNum==-1){return1;}//만약 firstNum 이 비어있다면 = 모든 숫자가 다 차있다면 종료intret=0;//정답for(intj=firstNum+1;j<stuNum;j++){if(areFriend[firstNum][j]&&!studentArr[j]){studentArr[j]=true;studentArr[firstNum]=true;ret+=countanswer();studentArr[j]=false;studentArr[firstNum]=false;}}returnret;}intmain(){intcaseNum;cin>>caseNum;while(caseNum--){cin>>stuNum>>matchNum;memset(studentArr,0,sizeof(bool)*10);//배열들을 전부 초기화 memset(areFriend,0,sizeof(bool)*10*10);intfriend1,friend2;for(inti=0;i<matchNum;i++){//친구 1 2 에 따라 전부 참으로 바꾸어줌 cin>>friend1>>friend2;areFriend[friend1][friend2]=true;areFriend[friend2][friend2]=true;}cout<<countanswer()<<endl;}return0;}
학생수만큼의 1차원 배열과 짝이되는 2차원 배열 두개를 구성하여 구현하였습니다.
예제가 4 6 인경우 원래 3이 나와야 하는데 2가 나오는 오류가 있습니다.
근데 정답처리가 되었다는...
다른 것들은 다 되는데 예제만 안되서 ...... ㅠㅠ
코드 한번 봐주시면 정말 감사하겠습니다. 그리고 이거 채점 기준을 다시 수정하셔야 될듯합니다. 감사합니다.
fkdlslss
학생수만큼의 1차원 배열과 짝이되는 2차원 배열 두개를 구성하여 구현하였습니다.
예제가 4 6 인경우 원래 3이 나와야 하는데 2가 나오는 오류가 있습니다.
근데 정답처리가 되었다는...
다른 것들은 다 되는데 예제만 안되서 ...... ㅠㅠ
코드 한번 봐주시면 정말 감사하겠습니다. 그리고 이거 채점 기준을 다시 수정하셔야 될듯합니다. 감사합니다.
8년 전