自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#算法巧解八皇后問題淺析

開發(fā) 后端 算法
C#算法巧解八皇后問題是如何實(shí)現(xiàn)的呢?那么本文就像你介紹關(guān)于八皇后問題的C#算法的解決。

八皇后問題問題描述:

八皇后問題是一個(gè)古老而著名的問題,是回溯算法的典型例題。該問題是十九世紀(jì)著名的數(shù)學(xué)家高斯1850年提出:在8X8格的國際象棋上擺放八個(gè)皇后,使其不能互相攻擊,即任意兩個(gè)皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。

C#算法的解決方法:

  1. public class Queen  
  2.  {  
  3.   public Queen()  
  4.   {  
  5.    //  
  6.    // TODO: 在此處添加構(gòu)造函數(shù)邏輯  
  7.    //  
  8.   }  
  9.   private static bool[] columflag=new bool[8]{true,  
  10.  true,true,true,true,true,true,true};//列占用標(biāo)記 true為可用  
  11.   private static bool[] leftflag=new bool[15]{true,true,true,  
  12.  true,true,true,true,true,true,true,true,true,true,true,true};//左行對角線占用標(biāo)記  
  13.   private static bool[] rightflag=new bool[15]{true,true,  
  14.  true,true,true,true,true,true,true,true,true,true,true,true,true};//右行對角線占用標(biāo)記  
  15.   private static int[,] position=new int[,]{{0,0,0,0,0,0,0,0},  
  16.    {0,0,0,0,0,0,0,0},  
  17.    {0,0,0,0,0,0,0,0},  
  18.    {0,0,0,0,0,0,0,0},  
  19.    {0,0,0,0,0,0,0,0},  
  20.    {0,0,0,0,0,0,0,0},  
  21.    {0,0,0,0,0,0,0,0},  
  22.    {0,0,0,0,0,0,0,0}  
  23.              };//皇后位置坐標(biāo)  
  24.   private static int sum=0;  
  25.     
  26.   public static void TryStep(int i)//i取值1至8  
  27.   {  
  28.    for (int j=1;j<=8;j++)   
  29.    {  
  30.     if (columflag[j-1]&&leftflag[i+j-2]&&rightflag[i-j+7])//如果當(dāng)前位置可以放置  
  31.     {  
  32.      columflag[j-1]=false;  
  33.      leftflag[i+j-2]=false;  
  34.      rightflag[i-j+7]=false;//占用  
  35.  
  36.      position[i-1,j-1]=1;//加入皇后位置  
  37.      if (i<8)  
  38.      {  
  39.       TryStep(i+1);//進(jìn)入下一行  
  40.      }  
  41.      else 
  42.      {  
  43.       sum++;//解法數(shù)統(tǒng)計(jì)  
  44.       Console.WriteLine("");  
  45.       Console.WriteLine("第 {0} 種解法:",sum);  
  46.       Console.WriteLine("");  
  47.  
  48.       for (int m=0;m<8;m++) //打印解法  
  49.       {  
  50.        for (int n=0;n<8;n++)  
  51.        {  
  52.         Console.Write("{0} ",position[m,n]);  
  53.        }  
  54.        Console.Write("\n");  
  55.         
  56.       }  
  57.  
  58.      }  
  59.  
  60.      columflag[j-1]=true;//如果不能放置時(shí),取消占座及移走皇后  
  61.      leftflag[i+j-2]=true;  
  62.      rightflag[i-j+7]=true;  
  63.      position[i-1,j-1]=0;  
  64.        
  65.     }  
  66.  
  67.    }  
  68.   }  
  69.  } 

C#算法巧解八皇后問題就向你介紹到這里,希望通過這個(gè)例子使你對C#算法有一點(diǎn)認(rèn)識(shí)。

【編輯推薦】

  1. 簡單介紹C#預(yù)處理
  2. 學(xué)習(xí)C#無詞尾符號(hào)經(jīng)驗(yàn)談
  3. C#調(diào)用QuickTest自動(dòng)化
  4. 詳解C#正規(guī)表達(dá)式
  5. C#字符串插入html標(biāo)簽
責(zé)任編輯:仲衡 來源: 博客園
相關(guān)推薦

2021-04-23 21:03:10

MySQL數(shù)據(jù)語法

2009-08-11 13:54:54

約瑟夫環(huán)算法C#算法

2009-08-11 09:19:52

C#選擇排序C#算法

2010-10-08 15:53:42

2010-12-24 15:38:53

C#單例模式

2009-09-04 18:16:19

C# Main參數(shù)C# Main

2009-08-21 14:03:04

C#網(wǎng)絡(luò)編程

2009-08-07 17:25:37

C# SortedLi

2009-08-11 10:26:49

C#算法C#字符串反轉(zhuǎn)

2009-08-14 17:45:52

C# ArrayLis

2009-08-17 18:34:50

C# ChangeCo

2010-09-17 13:45:40

JVM termina

2010-09-26 15:53:25

JVM內(nèi)存溢出

2009-08-25 17:59:49

C#入門

2009-08-24 10:07:57

C#泛型處理

2009-08-11 14:43:42

C#數(shù)據(jù)結(jié)構(gòu)與算法

2009-08-11 14:59:57

一道面試題C#算法

2009-08-20 16:15:19

C# 匿名方法

2009-07-31 14:03:21

C# Format函數(shù)

2009-08-18 09:24:52

C# Anonymou
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)