gpt4 book ai didi

java - N 皇后区 - java

转载 作者:行者123 更新时间:2023-12-01 17:19:26 26 4
gpt4 key购买 nike

我自己解决了 N 皇后问题,并采用了解决方案中以及在线提到的不同方法。

我的代码适用于最多 4 个输入,但开始打印 4 个之后的任何值的每个案例(即使是错误的)。我已经检查了很多次,但我无法在其中找到任何错误代码。

PFA 代码并查看是否可以找到错误。谢谢!

import java.io.*;
import java.util.*;

public class Main {

public static void main(String[] args) throws Exception {
Scanner scn = new Scanner(System.in);
int n= scn.nextInt();
int[][] arr = new int[n][n];
printNQueens(arr,"",0);
System.out.println();


}

public static void printNQueens(int[][] chess, String qsf, int row) {
if(row==chess.length)
{
qsf = qsf + ".";
System.out.println(qsf);
return;
}
for(int j=0;j<chess[0].length;j++)
{
if(chess[row][j]==0)
{
int x=row,y=j;
while(x<chess.length)
{
chess[x][y] = 1;
x++;
}
x = row;
while(x<chess.length && y>=0)
{
chess[x][y] = 1;
x++;
y--;
}
x = row;
y = j;
while(x<chess.length && y<chess[0].length)
{
chess[x][y] = 1;
x++;
y++;
}
printNQueens(chess,qsf + row + "-" + j + ", ",row+1);
x = row;
y = j;
while(x<chess.length)
{
chess[x][y] = 0;
x++;
}
x = row;
while(x<chess.length && y>=0)
{
chess[x][y] = 0;
x++;
y--;
}
x = row;
y = j;
while(x<chess.length && y<chess[0].length)
{
chess[x][y] = 0;
x++;
y++;
}

}
}
}
}

最佳答案

import java.io.*;

导入java.util.*;

公共(public)类主要{

public static void main(String[] args) throws Exception {
Scanner scn = new Scanner(System.in);
int n= scn.nextInt();
int[][] arr = new int[n][n];
printNQueens(arr,"",0);
System.out.println();


}

public static void printNQueens(int[][] chess, String qsf, int row) {
if(row==chess.length)
{
qsf = qsf + ".";
System.out.println(qsf);
return;
}
for(int j=0;j<chess[0].length;j++)
{
if(chess[row][j]==0)
{
chess[row][j] = 1;
ArrayList<Integer> ro = new ArrayList<>();
ArrayList<Integer> co = new ArrayList<>();
int x=row+1,y=j;
while(x<chess.length)
{
if(chess[x][y]==1)
{
ro.add(x);
co.add(y);
}
chess[x][y] = 1;
x++;
}
x = row+1;
y = j - 1;
while(x<chess.length && y>=0)
{
if(chess[x][y]==1)
{
ro.add(x);
co.add(y);
}
chess[x][y] = 1;
x++;
y--;
}
x = row+1;
y = j+1;
while(x<chess.length && y<chess[0].length)
{
if(chess[x][y]==1)
{
ro.add(x);
co.add(y);
}
chess[x][y] = 1;
x++;
y++;
}
printNQueens(chess,qsf + row + "-" + j + ", ",row+1);
x = row;
y = j;
while(x<chess.length)
{
chess[x][y] = 0;
x++;
}
x = row;
while(x<chess.length && y>=0)
{
chess[x][y] = 0;
x++;
y--;
}
x = row;
y = j;
while(x<chess.length && y<chess[0].length)
{
chess[x][y] = 0;
x++;
y++;
}
x = 0;
y = 0;
while(x<ro.size() && y<co.size())
{
chess[ro.get(x)][co.get(y)] = 1;
x++;
y++;
}

}
}


}

}

关于java - N 皇后区 - java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324315/

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