n皇后问题(dfs-摆放问题)
Posted qdu-lkc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n皇后问题(dfs-摆放问题)相关的知识,希望对你有一定的参考价值。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample Input
1 8 5 0
Sample Output
1 92 10
注意:
每一行必须摆放
a[t]=i 表示第t行,在第i列摆放皇后
预处理一下,否则超时
代码:
import java.util.Scanner; public class Main{ // static int n,cnt; // static int a[]=new int[15]; // static boolean check(int t){ // for(int i=0;i<t;i++) // if(a[i]==a[t] || Math.abs(i-t)==Math.abs(a[i]-a[t])) // return false; // return true; // } // static void dfs(int t){ // if(t==n ) cnt++; // for(int i=0;i<n;i++){ // a[t]=i; // if(check(t)) dfs(t+1); // } // } // public static void main(String[] args) { // Scanner scan=new Scanner(System.in); // while(scan.hasNext()){ // n=scan.nextInt(); // if(n==0) break; // cnt=0; // dfs(0); // System.out.println(cnt); // } // } public static void main(String[] args) { Scanner scan=new Scanner(System.in); int a[]={1,0,0,2,10,4,40,92,352,724}; while(scan.hasNext()){ int n=scan.nextInt(); if(n==0) break; System.out.println(a[n-1]); } } }
以上是关于n皇后问题(dfs-摆放问题)的主要内容,如果未能解决你的问题,请参考以下文章