-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
알고리즘 강좌 듣고 있는 중인데 코드가 제대로 작동을 안합니다
16.09.01 03:57 작성 조회수 150
0
컴파일도 잘되고 오류도 안나는데 ... N 이 아무리 커져도 항상 2번째 까지만 실행되고 끝나는데 이유를 모르겠어요;
프로그램을 돌려서 확인해보면 포문을 돌 때 level 이 2로 넘어가는 과정에서 false 가 반환되면 포문안에 있는 그다음 문장이 실행되어야 하는데 그 다음 문장이 실행되지 않고 그냥 포문 밖으로 나가게 되는 것 같은데 확실히는 모르겠습니다. ㅠㅠ
프로그램을 돌려서 확인해보면 포문을 돌 때 level 이 2로 넘어가는 과정에서 false 가 반환되면 포문안에 있는 그다음 문장이 실행되어야 하는데 그 다음 문장이 실행되지 않고 그냥 포문 밖으로 나가게 되는 것 같은데 확실히는 모르겠습니다. ㅠㅠ
import java.util.Scanner;a
public class NQueens{
public static int N ;
public static int [] cols;
public static void printcols(){
for(int i =1; i<=N; i++){
System.out.print(cols[i] + " ");
}
System.out.print("\n");
}
public static boolean promising(int level){
for(int i =1; i<level ; i++){
if(cols[i] == cols[level]){
return false;
}else if(level-i == Math.abs(cols[level]- cols[i]))
return false;
}
return true;
}
public static boolean queens(int level){
if(!promising(level)){
return false;
}
else if(level == N){
printcols();
return true;
}
for(int i =1; i<N; i++){
cols[level+1] = i;
if(queens(level+1)){
return true;
}
}
return false;
}
public static void main(String []args){
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
cols = new int [N+1];
queens(0);
}
}
답변을 작성해보세요.
답변 0