8皇后noiopenjudge顺序输出版
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int vis[20][20],put[20][20],cnt=0;
void dfs(int s)
{
if(s>8)
{
cnt++;
cout<<"No. "<<cnt<<'\n';
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
if(put[i][j]==1)
cout<<1<<" ";
else cout<<0<<" ";
}
cout<<'\n';
}
return;
}
for(int i=1;i<=8;i++)
{
if(!vis[0][i]&&!vis[1][8+i-s]&&!vis[2][s+i])
{
put[i][s]=1;
vis[0][i]=1;
vis[1][8+i-s]=1;
vis[2][s+i]=1;
s++;
dfs(s);
s--;
vis[0][i]=0;
vis[1][8+i-s]=0;
vis[2][s+i]=0;
put[i][s]=0;
}
}
return;
}
int main(){
memset(vis,0,sizeof(vis));
memset(put,0,sizeof(put));
dfs(1);
return 0;
}
n皇后问题codevs版(其实就是8改n)
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int vis[30][30],cnt=0,n;
void dfs(int s)
{
if(s>n)
{
cnt++;
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[0][i]&&!vis[1][n+i-s]&&!vis[2][s+i])
{
vis[0][i]=1;
vis[1][n+i-s]=1;
vis[2][s+i]=1;
s++;
dfs(s);
s--;
vis[0][i]=0;
vis[1][n +i-s]=0;
vis[2][s+i]=0;
}
}
return;
}
inline int read()
{
int s=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9')
{
s=s*10+ch-'0';
ch=getchar();
}
return s;
}
int main()
{
n=read();
dfs(1);
printf("%d",cnt);
return 0;
}