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 つのデータ マイニング アルゴリズム

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

Google のような大企業を辞めた後、彼らはどうやって次の仕事を見つけるのでしょうか?

今年上半期、中国と米国のインターネット・テクノロジー企業は、程度の差はあれ、レイオフや人員削減を経験...

音声認識にPythonを使用する方法を教えます

[[282998]]オンラインでいくつかの例を見つけましたが、音声をテキストに変換できる成熟したモデ...

推奨アルゴリズムコレクション(パート2) - SVDとCB

[[331259]] 【51CTO.comオリジナル記事】 1. はじめに前回の記事でレコメンデー...

金メダルレベルの数学スキル:DeepMindの幾何学的推論モデルがNatureに掲載され、コードはオープンソースで、フィールズ賞受賞者が賞賛

今回、人工知能アルゴリズムが国際数学オリンピック(IMO)で大きな進歩を遂げました。本日発行された国...

...

ドローンの応用シナリオに関する簡単な説明

技術の発展に伴い、ドローンの応用シナリオは絶えず拡大しています。ドローンが様々な業界で活用されている...

YouTube 動画推奨アルゴリズムを破る方法

[[176814]]映画、ドラマ、テレビ番組、オンライン ビデオなどの配信チャネルのコンテンツ ワー...

AIヒーロー | フェイフェイ・リーのGoogle退社秘話

スタンフォード大学人工知能研究所の公式ツイッターによると、11月20日、フェイフェイ・リー氏がスタン...

ChatGPTはどんどん怠惰になり、代わりにPUA人間を学習しました

GPT-4 が最近少し「怠惰」になっていることにお気づきでしょうか。現在、GPT-4 は常に特定のタ...

脳とコンピューターのインターフェースのための新しい「接着剤」が発明され、人間と機械の融合「サイボーグ」における新たな進歩がもたらされる

マスク氏の脳コンピューターインターフェースは「人間でテスト」されようとしているが、侵襲的な脳コンピュ...

NeO 360: 屋外シーンのスパースビュー合成のためのニューラルフィールド

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

人工知能と機械学習はエンタープライズアーキテクチャの一部となっている

これはおそらく、世界的なCOVID-19パンデミックによるものか、あるいはコンピューティング能力の継...

...