[ALGOSPOT Online Judge(AOJ)] PICNIC C++
λ¬Έμ : AOJ PICNIC
λ¬Έμ μ€λͺ
n λͺ
μ νμμ΄ μ£Όμ΄μ§κ³ , m κ°μ κ°λ₯ν μ§μ μκ° μ£Όμ΄μ§λλ€.
m κ°λ‘ μ£Όμ΄μ§ 쑰건μ λ§κ² μ§μ μ§μ μ μλ λͺ¨λ κ²½μ°μ μλ₯Ό ꡬνλ λ¬Έμ μ
λλ€.
κ°λ₯νλ€κ³ μ£Όμ΄μ§μ§ μμ νμλ€ λΌλ¦° μ§μ΄ λ μ μκ³ , λͺ¨λ νμλ€μ κ°μμ μ§μ΄ μμ΄μΌ ν©λλ€.
Solution
μμ νμ
νμμ μκ° μ΅λ 10λͺ
μΌλ‘ μμ νμμΌλ‘ λͺ¨λ κ²½μ°μ μλ₯Ό νμΈνμ¬ ν μ μμ΅λλ€.
μ΅μ
μ κ²½μ° μ΅λ νμ μ 10λͺ
μ΄ μμ μ μ μΈν 9λͺ
κ³Ό λͺ¨λ μ§μ΄ λ μ μλ κ²½μ°μΈλ°, μ΄ κ²½μ°λ 9*7*5*3*1
μ΄λ―λ‘ μκ°μ ν μμ ν΄κ²°ν μ μμ΅λλ€.
ν΄λΉ νμμ΄ μ§μ μ°Ύμλμ§μ μ λ¬΄μΈ isFind
λ°°μ΄μ λ§λ€μ΄ μ΄ λ°°μ΄λ‘ μ¬κ·λ₯Ό κ³μ λλ©° κ²°κ³Όλ₯Ό νμΈν΄ μ£Όλ λ°©μμΌλ‘ ν΄κ²°νμ΅λλ€.
Description
- ν μ€νΈμΌμ΄μ€μ μμΈ cκ° μ£Όμ΄μ§λ―λ‘, μλ‘μ΄ ν μ€νΈ μΌμ΄μ€λ§λ€ μ΄κΈ°νλ₯Ό ν΄μ£Όμ΄μΌ ν©λλ€.
- <string.h>μ memset() ν¨μλ₯Ό ν΅ν΄ ν μ€νΈ μΌμ΄μ€λ§λ€ μ΄κΈ°νλ₯Ό νμ΅λλ€.
#include <iostream>
#include <cstring>
using namespace std;
bool isFriend[10][10];
bool isFind[10];
int c, n, m;
int recursion(bool isFind[10]);
int main(){
cin >> c;
while(c--){
memset(isFriend,false,sizeof(isFriend));
memset(isFind,false,sizeof(isFind));
cin >> n >> m;
for(int i=1;i<=m;i++){
int st, ed;
cin >> st >> ed;
isFriend[st][ed] = true;
isFriend[ed][st] = true;
}
int result = recursion(isFind);
cout << result << '\n';
}
}
int recursion(bool isFind[10]){
int firstSearch = - 1;
for(int i=0;i<n;i++){
if(!isFind[i]){
firstSearch = i;
break;
}
}
if(firstSearch== -1) return 1;
int ret = 0;
for(int i=firstSearch+1; i<n; i++){
if(!isFind[i] && isFriend[firstSearch][i]){
isFind[firstSearch] = true;
isFind[i] = true;
ret += recursion(isFind);
isFind[firstSearch] = false;
isFind[i]=false;
}
}
return ret;
}
'Algorithm > AOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[AOJ] BOARDCOVER (0) | 2022.03.14 |
---|