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>



分享到:


相關文章: