8 クイーン問題を解く C# アルゴリズムの簡単な分析

8 クイーン問題を解く C# アルゴリズムの簡単な分析

8つのクイーンの問題の説明:

8 クイーン問題は古くからある有名な問題であり、バックトラッキング アルゴリズムの典型的な例です。この問題は、19 世紀の有名な数学者ガウスによって 1850 年に提唱されました。8X8 のチェス盤に 8 つのクイーンを配置するときに、クイーン同士が攻撃し合わないように、つまり、同じ行、列、または対角線上に 2 つのクイーンがないようにするには、何通りの方法があるでしょうか。

C# アルゴリズムによるソリューション:

  1. 公共 クラスクイーン
  2. {
  3.   パブリッククイーン()
  4. {
  5.     //  
  6.     // TODO: ここにコンストラクタロジックを追加します 
  7.     //  
  8. }
  9.   プライベート 静的  bool [] 列フラグ = new  ブール[8]{,
  10.   true true true true true true true }; //列占有マーク true は使用可能であることを意味する 
  11.   プライベート 静的  bool [] 左フラグ =新規 ブール[15]{,,,
  12.   true true true true true true true true true true true true }; // 左列の対角占有マーク 
  13.   プライベート 静的  bool [] 右フラグ = new  ブール[15]{,,
  14.   true true true true true true true true true true true true true }; //右斜め占有マーク 
  15.   プライベート 静的  int [,] 位置 =新しい 整数[,]{{0,0,0,0,0,0,0,0,0},
  16. {0,0,0,0,0,0,0,0,0},
  17. {0,0,0,0,0,0,0,0,0},
  18. {0,0,0,0,0,0,0,0,0},
  19. {0,0,0,0,0,0,0,0,0},
  20. {0,0,0,0,0,0,0,0,0},
  21. {0,0,0,0,0,0,0,0,0},
  22. {0,0,0,0,0,0,0,0,0}
  23. }; //クイーンの位置座標 
  24.   プライベート 静的 整数合計=0;
  25.     
  26.   公共 静的  void TryStep( int i) //iの範囲は1から8  
  27. {
  28.     ( int j=1;j<=8;j++)の場合
  29. {
  30.      if (columflag[j-1]&&leftflag[i+j-2]&&rightflag[i-j+7]) //現在の位置を 
  31. {
  32. 列フラグ[j-1] = false ;
  33. 左フラグ[i+j-2] = false ;
  34. rightflag[i-j+7]= false ; //占有 
  35.  
  36. position[i-1,j-1]=1; //クイーンの位置を追加 
  37.      もし(i<8)
  38. {
  39. TryStep(i+1); //次の行を入力する 
  40. }
  41.      それ以外 
  42. {
  43. sum++; //ソリューション統計 
  44. Console.WriteLine( "" );
  45. Console.WriteLine( "{0} 番目のソリューション:" ,sum);
  46. Console.WriteLine( "" );
  47.  
  48.        for ( int m=0;m<8;m++) // 解答を印刷 
  49. {
  50.         ( int n=0;n<8;n++)の場合
  51. {
  52. Console.Write( "{0} " 、位置[m,n]);
  53. }
  54. Console.Write( "\n" );
  55.         
  56. }
  57.  
  58. }
  59.  
  60. columflag[j-1] = true ; // 配置できない場合は、席をキャンセルしてクイーンを削除します 
  61. 左フラグ[i+j-2] = true ;
  62. 右フラグ[i-j+7] = true ;
  63. 位置[i-1,j-1]=0;
  64.        
  65. }
  66.  
  67. }
  68. }
  69. }

これで、8 クイーン問題を解決するための C# アルゴリズムの紹介は終わりです。この例によって、C# アルゴリズムについて理解を深めていただければ幸いです。

<<:  C# アルゴリズムの選択ソートの簡単な分析

>>:  SQL Server 2008 の 9 つのデータ マイニング アルゴリズム

ブログ    

推薦する

...

2018年ニューリテール5大トレンド:無人小売が広がり続け、人工知能やIoTが新たな価値を創出

[[220105]]画像出典: Visual China 2016年10月の雲旗大会で、ジャック・マ...

OpenAIに勝る完璧な埋め込みモデルであるNomic Embedが、重み、データ、コードがすべてオープンソースで利用可能になりました。

1週間前、OpenAIはユーザーに特典を配布しました。GPT-4が怠惰になる問題を修正した後、より...

持続可能な都市計画とスマートシティに人工知能を活用する方法

21 世紀の急速な都市化は、交通渋滞や汚染から住宅不足や公共サービスの逼迫まで、数多くの課題をもたら...

...

Cloudsimを使用して多次元QoSに基づくリソーススケジューリングアルゴリズムを実装する

Cloudsim は、グリッドコンピューティングシミュレーションソフトウェア Gridsim のプロ...

...

...

「素晴らしい成果物!」ハードウェア AI パフォーマンス テスト用の Python ライブラリがリリースされました

現在、人工知能技術は急速に発展しており、非常に注目を集めています。しかし、数多くの方法があるにもかか...

人工知能技術の高みを突破するための知恵を集め、上海勝思AIフレームワーク&ビッグモデルイノベーションセンターが正式に発足

2023年6月16日、「共に立ち上がって無限のイノベーションを」をテーマにした人工知能フレームワーク...

LSTM は惨めに失敗しました!ある少年が時系列モデルを使って恋人の感情を予測した4ページの論文を発表した。

[[430915]]ガールフレンドの感情は株式市場と同じくらい予測不可能です。違いは、多くの専門家...

アメリカはAIイノベーションをリードしているのか?フォーブス誌のグローバルAIスタートアップトップ50

NetEase Intelligence News: 人工知能はまもなく私たちの世界を変えるでしょ...

...

...