n皇后实验java代码 n皇后 java

八皇后问题 为什么会出现91种解.但实际结果应该是92.

可能是你没有控制好就结束了。

创新互联建站致力于网站建设,网站制作设计,营销网页按需网站制作,外贸网站建设,企业网站建设,小程序开发,网站SEO优化,网站设计制作案例丰富,是成都做网站公司和建站公司,欢迎咨询。

下面是我的java代码。你可以参考下。

private static int m = 0; // 计算种数

private static int n; //n皇后

public static void main(String[] args) {

System.out.println("请输入皇后数n(n=4)");

n = new Scanner(System.in).nextInt();

int a[] = new int[n]; // 用一位数组来存放皇后的位置,下标为行,值为列 。(如a[1] =

// 2,就是指第1行的二列有个皇后)

f(a, 0);

}

private static void f(int[] a, int i) {

if (i == n) { // 当找到八个皇后输出

sc(a);

}

for (int j = 0; j a.length; j++) {

if (fs(a, i, j)) { // 判断这个位置能不能放皇后

a[i] = j;

f(a, i + 1); // 递归调用自己

}

}

}

private static boolean fs(int[] a, int i, int j) {

for (int k = 0; k i; k++) {

if (j == a[k] || (k + a[k]) == (i + j) || (a[k] - k) == (j - i)) // 判断列、主对角、副对角上有没有皇后

/段升巧/ (因为是一行行判断的,所以行不用判断)

return false; // 如果笑手列、主对角、副对角上有皇后,返回false

}

return true; // 当循环执行完都没返回false或没有执行for,那就可以确定这个位置可以握键放皇后

}

private static void sc(int[] a) {

System.out.println("第" + (++m) + "种情况:");

for (int i = 0; i a.length; i++) {

for (int j = 0; j a.length; j++) {

if (a[i] == j)

System.out.print("Q ");

else

System.out.print(". ");

}

System.out.println();

}

System.out.println("---------------");

}

网页题目:n皇后实验java代码 n皇后 java
转载注明:https://www.cdcxhl.com/article30/dspjiso.html

成都网站建设公司_创新互联,为您提供网站内链云服务器网站导航自适应网站品牌网站设计外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司