• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

알고리즘 강좌 듣고 있는 중인데 코드가 제대로 작동을 안합니다

16.09.01 03:57 작성 조회수 147

0

컴파일도 잘되고 오류도 안나는데 ... N 이 아무리 커져도 항상 2번째 까지만 실행되고 끝나는데 이유를 모르겠어요;
프로그램을 돌려서 확인해보면 포문을 돌 때 level 이 2로 넘어가는 과정에서 false 가 반환되면 포문안에 있는 그다음 문장이 실행되어야 하는데 그 다음 문장이 실행되지 않고 그냥 포문 밖으로 나가게 되는 것 같은데 확실히는 모르겠습니다. ㅠㅠ
import java.util.Scanner;

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);
    }
}
a

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!