掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エイトクイーンのプログラムを書くには? (ID:9825)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Nクイーン問題は、汎用的なクイーン問題のことです。 # NxNマスを使ったクイーン問題 N=8であれば、エイトクイーン問題です。 ルールは至って簡単で、クイーンの動ける範囲(横方向、縦方向、斜め方向)に、別のクイーンがいなければよいだけです。 時間があれば、ここでレクチャーできますが、解答をズバリだと良くないと思いますので・・・。 ヒントを1つ。 Form1に、 TStringGrid(名前はStringGrid1)を1つ張る。ColCount, RowCountは8。FixCols, FixRowsは0 Button1をはる。 Button2をはる。 Button1のOnClickイベントに、 procedure TForm1.Button1Click(Sender: TObject); var x, y: Integer; begin for x := 0 to 7 do begin for y := 0 to 7 do begin StringGrid1.Cells[x,y] := IntToStr(x+y); end; end; end; と記述。 Button2のOnClickイベントに、 procedure TForm1.Button2Click(Sender: TObject); var x, y: Integer; begin for x := 0 to 7 do begin for y := 0 to 7 do begin StringGrid1.Cells[x,y] := IntToStr(7 - x + y); end; end; end; と記述。 これらの動作を見ると、ちょっと光が見えるかも。 動作結果は、 0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 3 4 5 6 7 8 9 10 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 12 6 7 8 9 10 11 12 13 7 8 9 10 11 12 13 14 と 7 6 5 4 3 2 1 0 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 10 9 8 7 6 5 4 3 11 10 9 8 7 6 5 4 12 11 10 9 8 7 6 5 13 12 11 10 9 8 7 6 14 13 12 11 10 9 8 7 になります。 斜めに連番が振られるので、クイーンの斜めに対して配列で存在の有無を持つことが簡単にできます。 がんばれ学生!
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.