#include <iostream>
using namespace std;
#define QUEEN_NUM 8
int position[QUEEN_NUM];//每一行的皇后放在第几列
int totalNum=0;
void placeQueen(const int row)//放在第几行
{
    
if (row>=QUEEN_NUM)
    {
        
for (int i=0;i<QUEEN_NUM;i++)
        {
            cout
<<position[i]<<" ";
        }
        cout
<<endl;
        totalNum
++;
        
return;//放置完了
    }
    
bool canPutHere=true;
    
for (int i=0;i<QUEEN_NUM;i++)//检查当前行的每一列是否与前面已经放置的某一个皇后冲突
    {
        canPutHere
=true;
        
for (int r=0;r<row;r++)//已经放了row-1个皇后
        {
            
if (position[r]==i//在同一列
                ||position[r]==i+r-row//在同一对角线上
                ||position[r]==i-(r-row))
            {
                canPutHere
=false;
                
break;
            }
        }
        
if (canPutHere)
        {
            position[row]
=i;
            placeQueen(row
+1);
        }
    }
}
void main()
{
    placeQueen(
0);
    cout
<<"Total Num: "<<totalNum<<endl;
}
Homepage: http://www.zoumin.org/
Posted on 2010-09-27 17:44 邹敏 阅读(202) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理