wxc_1 @ 2023-11-21 14:14:37
#include<bits/stdc++.h>
using namespace std;
int col[15];
int n,ans[3][15]={0},sum=0;
bool check(int r,int c)
{
for(int i=1;i<r;i++)
{
if(col[i]==c || abs(col[i]-c)==abs(i-r))
return false;
}
return true;
}
void dfs(int r)
{
if(r==n+1)
{
for(int i=1;i<=n;i++)
ans[sum][i]=col[i];
sum++;
return;
}
for(int i=1;i<=n;i++)
{
if(check(r,i))
{
col[r]=i;
dfs(r+1);
}
}
}
int main()
{
cin>>n;
dfs(1);
for(int i=0;i<3;i++)
{
for(int k=1;k<=n;k++)
cout << ans[i][k] << ' ';
cout << endl;
}
cout << sum;
return 0;
}
by wxc_1 @ 2023-11-21 14:49:51
过来,原来是数组开小了