蒟蒻刚才想用深搜做八皇后那题(p1219),结果最后发现不管输入什么数字,递归好像都起不了作用,求大佬帮忙看一看是哪里敲错了。
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int n,xie[30],hang[15],lie[15];
int ans=0,bu=0,flag=0,ce1,ce2;
string shunxu;
void chess(int bu)//bu已经放下棋子的个数
{
//ce1++;
if(bu>n*n)
{
ans++;
if(flag<3)//输出前三个结果
{
flag++;
for(int i=1;i<=n;i++)
cout<<shunxu[i-1]<<"";
cout<<endl;
}
return ;
}
int row,col,xien;
row=(bu-1)/n+1;
col=(bu-1)%n+1;
xien=col-row+n;
if(!hang[row]&&!lie[col]&&!xie[xien])
{
hang[row]=1;lie[col]=1;xie[xien]=1;
shunxu.push_back(col);
chess(bu+1);
shunxu.erase(shunxu.end()-1);
hang[row]=0;lie[col]=0;xie[xien]=0;
}
//ce2++;
}
int main()
{
cin>>n;
chess(1);
//cout<<ce1<<endl;
//cout<<ce2<<endl;
//cout<<bu<<endl;
cout<<ans<<endl;
return 0;
}