本文主要是介绍回溯法 8皇后,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题太经典,就不描述问题了:
public class HuangHou8 {static int n=8;static int tot=0;static int[] C;static int[][] vis=new int[3][16];public static void main(String[] args) {tot=0;C=new int[8];search(0);System.out.println(tot);tot=0;C=new int[8];search2(0);System.out.println(tot);}public static void search(int cur){if(cur==n){tot++;for (int i = 0; i < C.length; i++) {System.out.print(C[i]+" ");}System.out.println();}else{for (int i = 0; i < n; i++) {int ok=1;C[cur]=i;for (int j = 0; j < cur; j++) {if(C[cur]==C[j]||cur-C[cur]==j-C[j]||cur+C[cur]==j+C[j]){ok=0;break;}}if(ok==1){search(cur+1);}}}}public static void search2(int cur){if(cur==n){tot++;}else{for (int i = 0; i < n; i++) {if(vis[0][i]==0&&vis[1][cur+i]==0&&vis[2][cur-i+n]==0){C[cur]=i;vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1;search2(cur+1);vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0;}}}}
}
这篇关于回溯法 8皇后的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!