Hansel
백준_9663(DFS) 본문
import java.util.Scanner;
public class Main {
static int n;
static int[] board;
static int result=0;
public static boolean promising(int level){
boolean flag = true;
int prior = 1;
while(prior<level && flag){
if(board[level]==board[prior] ||
Math.abs(board[level]-board[prior])== Math.abs(level-prior))
flag=false;
prior++;
}
return flag;
}
public static void dfs(int level){
if(promising(level)){
if(level==n) result++;
else{
for(int i=1;i<=n;i++){
board[level+1]=i;
dfs(level+1);
}
}
}
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
n = kb.nextInt();
board=new int[15];
dfs(0);
System.out.println(result);
}
}
'알고리즘과 자료구조 > BFS&DFS' 카테고리의 다른 글
백준_14502(BFS) (0) | 2022.02.11 |
---|---|
백준_14500(DFS) (0) | 2022.02.10 |
백준_1260(DFS&BFS) (0) | 2022.02.04 |
백준_7569(BFS) (0) | 2022.02.04 |
백준_2178(BFS) (0) | 2022.02.04 |