这是给出板子的N皇后问题,您必须使用方法检查行,列和对角线的位置。我检查行的方法在这里:
private boolean oneQueenPerRow() //ensures that there is only 1 queen in each row
{
for (int i = 0; i <= board.length-1; i++)
{
for (int j = 0; j <= board.length-1; j++)
{
int count = 0;
char Q = QUEEN;
if (board[i][j] == Q && board[i+1][j] == Q)
{
count++;
if (count > 1 || count < 1) //all return true if here.
{
return false;
}
}
}
}
//If count is >/< is put here all return false.
return true;
}
想法是所有方法都返回true或false,然后由最终的boolean方法调用。如果一切都正确,那么董事会是一个有效的解决方案。如果错误,则说明该板不是有效的解决方案。这是给我的文本文件示例:
4BQBB烧烤QBBBBBQB
(它们应堆叠在一起。)
我对数组和for循环没有足够的知识来告诉它是遍历整个文件还是一次遍历整个文件,尽管当我说我用尽所有资源时请相信我。
我已经为此工作了好几天,我无法弄清楚,由于这种病毒,与我的教授的联系很差!我非常需要帮助!
我曾经尝试过,并且能奏效,希望对您有所帮助。
private boolean oneQueenPerRow() {
int foundQueens;
for (int i = 0; i < board.length; i++) {
foundQueens = 0;//each loop is a checked row
for (int j = 0; j < board.length; j++) {
if (board[i][j] == QUEEN)
foundQueens++;
}
if (foundQueens > 1) return false;
}
return true;
}