あなたは8x8ボードなので合計64個の正方形です。
これらの64 sqauresを含むリストに[list
]を入力し、可能性のすべてを見つけてくださいrecursively:各ステップは1つのポイントを「推測」し、再帰呼び出しを呼び出して他のポイントを検索します。
擬似コード:
choose(list,numPieces,sol):
if (sol.length == numPieces): //base clause: print the possible solution
print sol
return
for each point in list:
sol.append(point) //append the point to the end of sol
list.remove(point)
choose(list,numPieces,sol) //recursive call
list.add(point) //clean up environment before next recursive call
sol.removeLast()
はlist
は64個の要素が事前にリストされ、そしてnumPieces
はあなたが配置しようとしている作品であるchoose(list,numPieces,[])
で起動します。
注:この解決策は、がではないと仮定しているので、[(1,2),(2,1)]
と[(2,1),(1,2)]
はどちらも良い解決策です。
EDIT:
複雑さについての言葉だけ、あなたの問題のため(n^2)!/(n^2-k)!
可能な解決策があるので - あなたはそれらのすべてを探している、任意のアルゴリズムはそうでそれを起動しようとすると、指数関数実行時に苦しむだろうわずか10個〜400年はかかるだろう
[上記の表記では、n
は、ボードの幅と長さで、かつk
はピースの数である]
位置に関する制限を混在さ?またはあなたはnポジションのすべての可能な選択をしたいですか? – Nick
法的ポジションでなければなりませんか(例えば、白人の騎士、黒人の騎士、最初の2つのランクの駒なしなど) – DNA
@Nick制限は全くありません。私はちょうどそれがより簡単にするためにチェスの例を追加しましたが、私は要素の可能なすべての分布を見つけるために任意の "マップ"です)numbrerのアイテムの可能なすべての構成が必要です。 – Juanillo