gpt4 book ai didi

java - Java中N皇后作业练习题

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:24 25 4
gpt4 key购买 nike

  • 我正在使用我自己的堆栈实现。
  • 我不应该使用递归。

我的代码:

public static void solve(int bsize)
{
stack queenLoc = new stack();

int y=0;
int count=0;
boolean done = false;


while(done == false && queenLoc.size() != bsize)
{
queenLoc.push(count);

if(!isSafe(bsize,queenLoc,count))
{
while(queenLoc.getTop() == bsize)
{
y = queenLoc.pop();
count--;
}
if(queenLoc.top != null)
{
queenLoc.push(queenLoc.pop()+1);
count++;
}
else
{
queenLoc.push(y+1);
count++;
}
}
else if(queenLoc.size() == bsize)
{
done = true;
}
else
{
count++;
queenLoc.push(count);
}
}

queenLoc.showAll();

if(queenLoc.size() == bsize)
printBoard(bsize, queenLoc);
}

public static boolean isSafe(int bsize, stack s,int count)
{
for(int i = 1; i<s.size(); i++)
{
if(s.getTop() == s.get(i) || s.getTop()+count == s.get(i)+s.size() || s.getTop()-count == s.get(i)-s.size())
return false;
}

return true;
}

我不确定到底发生了什么,我弄错了位置,printBoard 函数只在第一行打印皇后。我实际上尝试了很多可能性,但我有点困惑。

任何人都可以指出我正确的方向并告诉我代码中的问题出在哪里吗?我正在使用堆栈来存储列和堆栈类中的“计数”变量以指向哪一行。

最佳答案

package mynqueens;


public class MyNQueens {
public static int board[][] = new int[4][4];
public static int row,column;

public MyNQueens(){


}
public static void main(String[] args) {

check(0,0);
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
System.out.print(board[i][j] + "\t");
}
System.out.println();
}

}
public static void check(int i, int j ){

while(i<3){
board[i][j] = 1;
i++;
}
while(i!=0){
board[i][j] = 1;

i--;
}
while(j<3){
board[i][j]=1;
j++;
}
while(j!=0){
board[i][j] = 1;
j--;
}
while(j<3 || i<3){
board[i][j] = 1;
i++;
j++;
}
while(j!=0 || i!=0){
board[i][j] = 1;
i--;
j--;
}
while(i<3 || j!=0){
board[i][j]=1;
i++;
j--;
}
while(i!=0 || j<3){
board[i][j]=1;
i--;
j++;

}


}




}

关于java - Java中N皇后作业练习题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com