N皇后问题

来源:互联网 发布:gson如何解析json数组 编辑:程序博客网 时间:2024/06/14 11:24

【题目】

在N×N的棋盘上要摆N个皇后,要求任何两个皇后不同行不同列,也不再同一条斜线上。给定一个整数n,返回n皇后的摆法有多少种。

【举例】

n=1,返回1
n=2或3,无论怎么摆都不行,返回0
n=8,返回92

【代码】

public static void main(String[] args) {        System.out.println(queen(1));//1        System.out.println(queen(2));//0        System.out.println(queen(8));//92    }    //N皇后问题    public static int queen(int n){        if(n<1){            return 0;        }        int[] record=new int[n];//record[i]表示第i行皇后所在的列数        return queenprocess(0,record,n);    }    private static int queenprocess(int i, int[] record, int n) {        if(i==n){            return 1;//最后一行只有一个位置?        }        int res=0;        for(int j=0;j<n;j++){//从第0列开始依次放置皇后,判断该位置是否合适            if(isValid(record,i,j)){                record[i]=j;                res+=queenprocess(i+1,record,n);//递归,逐行寻找皇后位置            }        }        return res;    }    private static boolean isValid(int[] record, int i, int j) {        for(int k=0;k<i;k++){//查看前i行的皇后位置            if(j==record[k]||Math.abs(record[k]-j)==Math.abs(k-i)){                return false;//同列、在斜线上,都不能放皇后            }        }        return true;    }
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华夫饼故事 华夫饼价钱 丹夫华夫饼为什么贵 华夫饼袋装 法式华夫饼 芝士华夫饼 华夫饼食谱 乐天华夫饼 制作华夫饼 华夫饼设备 华夫饼 价格 香草华夫饼 华美华夫饼 蜂蜜华夫饼 进口华夫饼 芝士味华夫饼 松饼 华夫饼 自己做华夫饼 华夫饼丹夫 丹夫华夫饼公司 华夫饼口味 华夫饼套餐 丹夫华夫饼无糖 蓝莓华夫饼 华夫饼生产线 自制 华夫饼 华夫饼历史 电饼铛华夫饼 丹夫 华夫饼 华夫饼怎么卖 华夫饼 君之 华夫饼起源 华夫饼种类 正宗华夫饼的做法 现烤华夫饼 丹夫华夫饼广告 华夫饼原料 华夫饼 贵 华夫饼的起源 华夫饼 丹夫 华夫饼 松饼