我試着寫Ønonogram求解器在Java中學校的功課。它適用於除一個之外的所有提供的輸入。我的代碼是在github https://github.com/farkadav/Nonogram-solver回溯在nonogram求解似乎是無限循環
在CSPSolver我解決nonogram。我對所有能排/給出其在GitHub上的文本文件,然後我檢查弧一致性,然後我試着通過回溯找到解決辦法的約束的cols組合。我也有輸出它應該看起來如何解決。當我嘗試解決dino.txt時,我的回溯函數似乎進入瞭解決第11行和第15列的無限循環。這是該方法的代碼。
public void backtracking(){
if(orderedVars.isEmpty()){
String[] solString = new String[rowDim];
for(Line line : rowSolution){
solString[line.position] = new String();
for(int j=0; j<colDim; j++){
solString[line.position] +=line.value[j];
}
}
String solution = new String();
for(String sol : solString){
solution += sol +"\n";
}
solutions.add(solution);
return;
}
CSPVariable cspVar = orderedVars.poll();
for(char[] var : cspVar.storage){
if(consistent(var,cspVar)){
if(cspVar.Row){
rowSolution[helpX++] = new Line(var,cspVar.position,cspVar.Row);
backtracking();
rowSolution[--helpX] = null;
} else{
colSolution[helpY++] = new Line(var,cspVar.position,cspVar.Row);
backtracking();
colSolution[--helpY] = null;
}
}
}
orderedVars.add(cspVar);
}
我不知道究竟是什麼原因導致它,任何幫助將不勝感激。如果有什麼不清楚的地方是鏈接到作業http://cw.fel.cvut.cz/wiki/courses/a4b33zui/task2-malovane-krizovky-en
恐怕有必要從算法的定義。但是,我可能是錯的我不是csp的大師。無論如何......無論如何我都試過了,它使整個程序崩潰。謝謝你的建議 :) – lobito