小编Ala*_*ann的帖子

递归:如何尝试不同的整数1到9的组合,以及(部分)反向序列在错误的情况下重新开始?

语言: Java

目标: 一般:解决数独游戏

具体:做一个递归方法solve():

  • 检查数字是否与行,列或框中的其他数字冲突
  • 如果不是这样,则在给定的空白空间中填充[1-9]之间的整数并移动到下一个空白空间
  • (部分或全部)如果空间不能被[1-9]之间的整数填充而没有冲突,则会反转进度.然后再试一次,直到填满所有空格(并解决数独).

问题: 循环尝试填充整数n,但总是先尝试最小的数字.如果我使用递归,整数将始终是相同的.

问题: 1.如何使代码填充1到9之间的数字.

  1. 如何使用递归来部分或完全擦除进度并尝试不同的数字.

  2. (额外)我到目前为止构建的代码部分地解决了数独(直到空方块无法填充),但现在它甚至没有填充第一个方块,即使它之前做过.这不是我的主要问题,但如果有人注意到这个问题,我会非常感激,如果有人指出的话.

回顾: 我正在阅读关于递归的课程材料,但无法找到正确的信息.

免责声明: 方法printMatrix之外的所有println命令都用于测试

这是有问题的方法:

       // prints all solutions that are extensions of current grid
      // leaves grid in original state
void solve() {
//local variables
int[] currentSquare;
int currentRow;
int currentColumn;
boolean checkConflict;
currentSquare = new int[2];

//saftey limit for testing
int limit;
limit = 0;

while(findEmptySquare() != null){

  currentSquare = findEmptySquare().clone();
  currentRow = currentSquare[0];
  currentColumn = currentSquare[1];
  //System.out.println(" column c:"+currentColumn+" row r:"+currentRow); …
Run Code Online (Sandbox Code Playgroud)

java recursion

8
推荐指数
1
解决办法
376
查看次数

标签 统计

java ×1

recursion ×1