Java4皇后修改
请注意:我被要求以任何我喜欢的方式修改NQueens问题。我已经想到了这种方法,并想实施它。这不是一个直接的家庭作业问题,而是我如何实施自己的修改的问题 我在下面写了一个代码,可以解决4个皇后的问题。因此,根据该准则,没有两个皇后可以在同一行、同一列和同一对角线上,从而不具有攻击性。我试图修改它,如果我放置皇后,那么它可以放置在同一列中,但跳过两行,它可以放置在同一行中,跳过两列,同样,它可以放置在同一对角线中,跳过两行和两列 因此,简单地说,女王可以被放置在同一行、同一列、同一对角线上,跳过两个街区。 对于4皇后区,当前的输出如下所示:Java4皇后修改,java,n-queens,Java,N Queens,请注意:我被要求以任何我喜欢的方式修改NQueens问题。我已经想到了这种方法,并想实施它。这不是一个直接的家庭作业问题,而是我如何实施自己的修改的问题 我在下面写了一个代码,可以解决4个皇后的问题。因此,根据该准则,没有两个皇后可以在同一行、同一列和同一对角线上,从而不具有攻击性。我试图修改它,如果我放置皇后,那么它可以放置在同一列中,但跳过两行,它可以放置在同一行中,跳过两列,同样,它可以放置在同一对角线中,跳过两行和两列 因此,简单地说,女王可以被放置在同一行、同一列、同一对角线上,跳过两
* Q * *
* * * Q
Q * * *
* * Q *
及
但is还应提供以下输出:
Q * * Q
* * * *
* * * *
Q * * Q
因此,这里女王被放置在每两个街区之后,水平、垂直和对角
代码:
import java.util.*;
公务舱皇后区{
/***************************************…
*如果皇后位置q[n]与
*其他皇后q[0]到q[n-1]
****************************************/
公共静态布尔值是一致的(int[]q,int n){
对于(int i=0;i
我做错了什么?如何更改代码以使其与修改一起工作?这在您的模型中是不可能的。
在模型中,queens具有下一个坐标:
Oy = q[Ox];
结果
Q * * Q
* * * *
* * * *
Q * * Q
数组在同一位置上应有两个值
q[0] == 0
q[0] == 3
q[3] == 0
q[3] == 3
这在一维数组中是不可能的。您应该更改模型和算法我看不到代码中的任何地方。但是我会说,
if(q[I]==q[n])返回false代码>将阻止您的示例工作。我尝试使用q[I+2]代替q[I]==q[n],但它无法工作。因此,我已经张贴了没有修改的原始代码。它以传统的方式为4个皇后工作,但不是我希望它以我自己的修改方式工作。@VishalSinha我错了。答案是正确的q[0]==0
和q[0]=3
同时进行。这是不可能的。此非法数组应作为printQueens
Q * * Q
* * * *
* * * *
Q * * Q
q[0] == 0
q[0] == 3
q[3] == 0
q[3] == 3