728x90
반응형
#include <iostream>
using namespace std;
bool areFriends[10][10];
int n;
int countPairings(bool taken[10])
{
//cout << "함수호출 " << endl;
//for (int i =0;i<n;i++)
//{
// cout << taken[i] << " ";
//}
//cout << endl;
int firstFree = -1;
for (int i = 0; i < n; ++i)
{
if (!taken[i])
{
firstFree = i;
break;
}
}
if (firstFree == -1)
{
//cout << "+1" << endl;
return 1;
}
int ret = 0;
for (int pairWith = firstFree + 1; pairWith < n ; ++pairWith)
{
/*cout << "pairWitht "<<pairWith << endl;
cout << "firsFree " << firstFree << endl;
cout << taken[pairWith] << " " << areFriends[firstFree][pairWith] << endl;*/
if (!taken[pairWith] && areFriends[firstFree][pairWith])
{
taken[firstFree] = taken[pairWith] = true;
/*for (int i = 0; i < n; i++)
{
cout << taken[i] << " ";
}
cout << endl; */
ret += countPairings(taken);
taken[firstFree] = taken[pairWith] = false;
/*for (int i = 0; i < n; i++)
{
cout << taken[i] << " ";
}
cout << endl;*/
}
}
return ret;
}
int main()
{
int test_case = 0;
int m;
int temp1,temp2;
int ans = 0;
bool taken[10] = { 0,0,0,0,0,0,0,0,0,0 };
cin >> test_case;
for (int tmp = 0; tmp < test_case; tmp++)
{
n = m = 0;
for (int k = 0; k < n; k++)
{
taken[k] = 0;
}
for (int k = 0; k < 10; k++)
{
for (int k2 = 0; k < 10; k++)
{
areFriends[k][k2] = false;
}
}
cin >> n >> m;
for (int i = 0; i < m; i++)
{
cin >> temp1>>temp2;
if (areFriends[temp1][temp2] == false)
{
areFriends[temp1][temp2] = true;
if (areFriends[temp2][temp1] == false)
{
areFriends[temp2][temp1] = true;
}
}
}
ans = countPairings(taken);
cout << "Answer is " << countPairings(taken) << endl;
}
return 0;
}
왜 마지막 답이 5가 나오는지 모르겠음 초기화를 잘못햇나
반응형
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 20437 - 문자열 게임2 (C++) - 미완 (0) | 2020.12.29 |
---|---|
[백준] 20437 - 문자열 게임2 (Python) (0) | 2020.12.29 |
[백준] 2116 - 주사위 쌓기(C++) (0) | 2020.12.28 |
[백준] 2116 - 주사위 쌓기(Python) (0) | 2020.12.28 |
[백준] 20057 - 마법사 상어와 토네이도(Python) (0) | 2020.12.07 |