Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- recursive
- 리눅스
- linux
- big data
- sort
- 설치
- 아마존
- 도커
- 자료구조
- 빅데이터
- Data Structure
- rhcsa
- 하둡
- 알고리즘
- docker
- AWS
- algorithm
- 재귀
- 자바
- Amazon
- java
- 레드햇
- redhat
- 스토리지
- storage
- data
- Spring
- hadoop
- 스프링
- Redshift
Archives
- Today
- Total
Developer MJ
[Java] N_Queens Algorithm 문제 본문
N X N 체스판에 N개의 Queen들이 같은 열과 대각선에 위치하지 않도록 하는 좌표 출력
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
public class Nqueens {
private static int[] cols;
private static int n;
private static int level;
public static void main(String[] args) {
// TODO Auto-generated method stub
// BufferedReader br = new BufferedReader(new
// InputStreamReader(System.in));
Scanner s = new Scanner(System.in);
n = s.nextInt();
level = 0;
cols = new int[n + 1];
queens(level);
s.close();
}
public static boolean queens(int level) {
if (!feasible(level)) {
return false;
} else if (level == n) {
for (int i = 1; i <= n; i++) {
System.out.println(i + " " + cols[i]);
}
return true;
}
for (int i = 1; i <= n; i++) {
cols[level + 1] = i;
if (queens(level + 1)) {
return true;
}
}
return false;
}
public static boolean feasible(int level) {
for (int i = 1; i < level; i++) {
if (cols[level] == cols[i]) {
return false;
} else if ((level - i) == Math.abs(cols[level] - cols[i])) {
return false;
}
}
return true;
}
}
'Programming > Code' 카테고리의 다른 글
[Java] Stack (0) | 2019.02.13 |
---|---|
[Java] BlobSize Algorithm 문제 (0) | 2017.10.12 |
[Java] Maze 미로찾기 Algorithm 문제 (0) | 2017.10.12 |
[Java] PowerSet (멱집합) Algorithm 문제 (0) | 2017.10.12 |
[Library] JSch 리눅스 서버 원격 Control (0) | 2017.07.26 |