02.26 DFS-八皇后 Checker Challenge

DFS-八皇后 Checker Challenge

設4個數組:a[i]表示第i行的縱座標為多少b[i]表示第i列有沒有被佔用,1佔用,0,沒佔用c[i]記錄左下到右上的對角線:我們可以發現,如果兩個點都在左下到右上的線上,那麼他們的橫、縱座標相加的值相等;d[i]記錄右下到左上的對角線:我們可以發現,如果兩個點都在右下到左上的線上,那麼他們的橫、縱座標相減的值相等,但有可能是負數,所以我們偏移n

這樣設4個數組,我們每次判斷即可,不用再循環一次了。

<code>import java.util.Scanner;public class 八黃後 {    static int sum,n;    static int a[]=new int[30];    static int b[]=new int[30];    static int c[]=new int[30];    static int d[]=new int[30];    static void dfs(int h){        if (h==n+1){            sum++;             if(sum<=3){                for (int i = 1; i /<code>



分享到:


相關文章: