public boolean placeLizardsByDFS(int noOfQueens){
if(noOfQueens == 0) {
return true;
}
else {
Iterator itForRow = allowedRows.entrySet().iterator();
while (itForRow.hasNext()) {
double tempRow = (Double) ((Map.Entry) itForRow.next()).getKey();
Iterator itForColumn = allowedColumns.entrySet().iterator();
while(itForColumn.hasNext()) {
double tempColumn = (Double) ((Map.Entry) itForColumn.next()).getKey();
placeQueen(tempRow, tempColumn);
if (placeLizardsByDFS(noOfQueens - 1))
return true;
else
removeQueen(tempRow, tempColumn, tempRangeForRow, tempRangeForColumn);
}
}
return false;
}
}
我试图解决N皇后问题。但似乎有更大的输入,我的代码是低效的。我试图通过减少编号进行优化。行和列的行,以搜索更深层次的递归。那么可以为地图传递迭代器的副本吗? 我在这里遇到的问题是,我是否可以为下一级递归传递一个新的迭代器而不会因为Java是通过引用调用而在更高级别上的迭代器受到影响?