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

八皇後問題

編輯:C++入門知識

一、問題描述:

在一個8*8的棋盤上,擺放八個皇後,要求同一行內不能有兩個皇後,同一列不能有兩個皇後,同一斜線上不能有兩個皇後。

二、算法思路:

采用回溯的算法思想:即逐步探測每種可能的配置,如果滿足要求,就保存下來,如果不滿足要求,就回溯到上一步,繼續探測。直到所有情形均被探測,程序結束。

三、C++源程序:

<iostream>
  
* dat; 
    conf* next; 
    conf( s) == =~ size; 
 s=); 
         solve(); 
         print();
        ~Queen(); 
    * confHead; 
        * rows; 
        * cols; 
        * left; 
        * right; 
         save(); 
         putQueen( r, c); 
         delQueen( r, c); 
 

== = = [*size-= [*size-=(i=;i<size;i++=-=(i=;i<(*size-);i++==~* (confHead!==confHead->=
* (confHead=== (i=;i<size;i++->dat[i]=->next==(temp->next!==temp->->next==temp-> (i=;i<size;i++->dat[i]=->next=
 Queen::putQueen( r, (cols[c] && left[r+c] && right[size--c+==+c]=--c+r]= 
         
 Queen::delQueen( r,=-=+c]=--c+r]=
 num=; 
     ir=,ic=; 
    ((ic<=size-=size; 
++ (rows[ir]==-) 
 (ir===ir-==ic+  (ir==size-) 

            num++=ir-==ic+  
=ir+=
* temp= (temp!= (i=;i<size;i++<<<<i<<<<temp->dat[i]<<<< (i=;i<size;i++ (j=;j<size;j++ (temp->dat[i]==<<<<<<=temp-> 

(<<<<>> (s<<<<< num=<<<<num<<<<>>   

當size為13時,程序在我的機器上跑了很長時間。因此,可能需要更好的方法去解決這個問題。

四、擴展閱讀:

八皇後問題

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