最近、私は古い開発/スクリプトを調べていて、クイーンの問題が解決されたスクリプトに出くわしました。実際、これは彼のアルゴリズムを書く段階がどのように進んだかについての記事を書くのに役立ちました。おそらく、初心者プログラマーが同様の問題を解決するのに役立ちます(例のコードはJavaで書かれています)。
前書き
4年前、1000x1000のボードに1000のクイーンを配置する問題について騒ぎがありました。事実、クイーンを
ボード上で互いに配置しないように配置することは、反復回数が多く、その結果、実行時間が長くなるという問題です。他の多くの人と同じように、私はそれが許容できる時間内に解決できるかどうかを確認したかったのです。
タスクを研究する
写真には、水平、垂直、または斜めの線に沿って交差しない8つのクイーンがあります。
これらのルールに従ってクイーンをボードに配置するスクリプトを作成する必要があります。
女王を見つけるためのアルゴリズム
形状を検索するために再帰が選択されました。
自分自身を呼び出すメソッドの説明:
渡されたセルが他の図と交差する場合、
false
転送されたセルが誰とも交差しない場合:
true
.
( )
true
.
.
false
false
)false
.
true
.
8x8, 32x32, 50x50 . .
.
.
.
. .
.
400x400.
.
.
.
.
.
"row+1" "column+2" , .
1000x1000 ~4 ( : Intel Core i5-10400H CPU 2.60GHz).
1116x1116 ~6 .