程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 遞歸實現N皇後問題

遞歸實現N皇後問題

編輯:C++入門知識

其實是看到一位名為“活在二次元的偽觸”的博主昨天還是前天寫了篇這個題材的筆記,覺得有點意思,於是想自己來寫寫。

其實我發現上述那位同學寫

 

在國際象棋上擺放八個皇後,使其不能互相攻擊,即任意兩個皇後都不能處於同一行、同一列或同一斜線上,問有多少種擺法。

 

擴展到

 

一看,似乎要用到二維數組。其實不需要。一維數組就能判斷,比如

 

這種思路的實現方式網上大把,包括前面提到的那位同學,所以也就不要糾結有沒有改善有沒有提高之類的了,權當一次練習即可。

直接上代碼好了,覺得遞歸方法沒什麼好說的,空間想想能力好一點兒很容易理解。明天有空再寫寫非遞歸實現吧。


#include<iostream><fstream><iomanip><stdlib.h>
  Check( rowCurrent, *&NQueen);                         
 Print(ofstream &os, n, *&NQueen);                                  
 Solve( rowCurrent, *&NQueen, n, &count, ofstream &os);           
 Check( rowCurrent, *& i = (i <(NQueen[i] == NQueen[rowCurrent] || (abs(NQueen[i]-NQueen[rowCurrent]) == abs(i- ++ 
 Print(ofstream &os, n, *&<< ( i = ;i < n;i++( j =  ; j < n; j++<<(NQueen[i]==j?:<<setw(<<<< Solve( rowCurrent, *&NQueen, n, &count, ofstream &(rowCurrent == n)  
++( i = ;  i < n; i++= i;                     
        +,NQueen,n,count,os);  
 n;           
     count = ;   
    cout<<<<>>(n<<<<<  *NQueen =  <<<<count<<<< 

順便給出前面提到的那位同學的隨筆地址:

http://www.cnblogs.com/FZQL/p/3485616.html

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved