๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
๊ฒฝ๋ก ํ์(์ธ์ ํ๋ ฌ) ๋ณธ๋ฌธ
๋ฐ์ํ
์ค๋ช
๋ฐฉํฅ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ง๋ฉด 1๋ฒ ์ ์ ์์ N๋ฒ ์ ์ ์ผ๋ก ๊ฐ๋ ๋ชจ๋ ๊ฒฝ๋ก์ ๊ฐ์ง ์๋ฅผ ์ถ๋ ฅํ๋ ํ ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ์๋ ๊ทธ๋ํ์์ 1๋ฒ ์ ์ ์์ 5๋ฒ ์ ์ ์ผ๋ก ๊ฐ๋ ๊ฐ์ง ์๋
1 2 3 4 5
1 2 5
1 3 4 2 5
1 3 4 5
1 4 2 5
1 4 5
์ด 6 ๊ฐ์ง์ ๋๋ค.
์ ๋ ฅ์ค๋ช
์ฒซ์งธ ์ค์๋ ์ ์ ์ ์ N(1<=N<=20)์ ๊ฐ์ ์ ์ M๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์๋ถํฐ M์ค์ ๊ฑธ์ณ ์ฐ ๊ฒฐ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ์ค๋ช
์ด ๊ฐ์ง์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ์์
5 9
1 2
1 3
1 4
2 1
2 3
2 5
3 4
4 2
4 5
์ถ๋ ฅ์์
6
- ๊ตฌํ
import java.util.*;
class Main{
static int n, m, answer = 0;
static int[][] graph;
static int[] ch;
public void DFS(int v) {
if(v==n) {
answer ++;
}else {
for(int i=1; i<=n; i++) {
// v : ํ์ฌ ์ ์
if(graph[v][i] == 1 && ch[i]==0) {
ch[i] = 1;
DFS(i);
ch[i] = 0;
}
}
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
// ์ ์ ์ ๊ฐฏ์
n=in.nextInt();
// ๊ฐ์ ์ ๊ฐฏ์
m=in.nextInt();
// ์ธ์ ํ๋ ฌ
graph=new int[n+1][n+1];
ch = new int[n+1];
for(int i=0; i<m; i++) {
int a = in.nextInt();
int b = in.nextInt();
// ๋ฐฉํฅ๊ฐ 1
graph[a][b] = 1;
}
ch[1] = 1;
T.DFS(1);
System.out.println(answer);
}
}
'๊ฐ๋ฐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ทธ๋ํ ์ต๋จ๊ฑฐ๋ฆฌ(BFS) (0) | 2021.08.02 |
---|---|
๊ฒฝ๋กํ์(์ธ์ ๋ฆฌ์คํธ, ArrayList) (0) | 2021.08.02 |
๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ (0) | 2021.08.01 |
Tree ๋ง๋จ๋ ธ๋๊น์ง์ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก(DFS, BFS) (0) | 2021.08.01 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์ก์์ง ์ฐพ๊ธฐ (BFS : ์ํํธ๋ฆฌํ์) (0) | 2021.08.01 |
Comments