GEZHENHAO @ 2024-07-12 16:07:27
#include<iostream>
using namespace std;
int h[20],l[20],z[30],y[30],s,n;
void pt()
{
int i;
if(s<=2)
{
for(i=1;i<=n;i++)
{
cout<<h[i]<<' ';
}
cout<<endl;
}
s++;
}
void dfs(int i)
{ int j;
for(j=1;j<=n;j++)
{
if (!l[j]&&!z[i+j]&&!y[i-j+n])
{
h[i]=j;
l[j]=1;
z[i+j]=1;
y[i-j+n]=1;
if (i==n)
{
pt();
return;
}
else
{
dfs(i+1);
}
y[i-j+n]=0;
z[i+j]=0;
l[j]=0;
h[i]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
cout<<s;
return 0;
}
每次都只能输出一组
求解!!
by ABCgfed @ 2024-07-12 16:21:41
@GEZHENHAO
#include<iostream>
using namespace std;
int h[20],l[20],z[30],y[30],s,n;
void pt()
{
int i;
if(s<=2)
{
for(i=1;i<=n;i++)
{
cout<<h[i]<<' ';
}
cout<<endl;
}
s++;
}
void dfs(int i)
{ int j;
for(j=1;j<=n;j++)
{
if (!l[j]&&!z[i+j]&&!y[i-j+n])
{
h[i]=j;
l[j]=1;
z[i+j]=1;
y[i-j+n]=1;
if (i==n)
{
pt();
y[i-j+n]=0;
z[i+j]=0;
l[j]=0;
h[i]=0;
return;
}
else
{
dfs(i+1);
}
y[i-j+n]=0;
z[i+j]=0;
l[j]=0;
h[i]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
cout<<s;
return 0;
}
by GEZHENHAO @ 2024-07-12 16:38:25
感谢,已AC