RY111 @ 2024-08-04 15:34:04
不知道为啥和想象的输出不同,模拟了一下2,感觉应该输出是对的,结果还是不对
#include<bits/stdc++.h>
using namespace std;
const int maxn=15;
bool st[maxn];
int cnt=0;
int n;
vector<int> a[1000];
void dfs(int x)//枚举到第几行
{
if(x==n)
{
for(auto it:a[cnt])
{
cout<<it<<" ";
}
// cout<<endl;
cnt++;
return ;
}
for(int i=1; i<=n; i++)//放到哪一列
{
if(st[i]==0)
{
st[i]=1;
a[cnt].push_back(i);
dfs(x+1);
st[i]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
cout<<cnt;
}
by RY111 @ 2024-08-04 15:44:54
把边界改成x==n+1了还是不对
by _Yonder_ @ 2024-08-04 15:46:13
斜对角线啥的没判断
by RY111 @ 2024-08-04 15:53:15
@Yonder 但是对于它输出很奇怪,即使先不考虑对角线这个问题好像也不对 我想的是应该输出顺序应该是这样,但是实际是下面那个 123 132 213 231...
/*
1 2 3
3 2
2 1 3
3 1
3 1 2
2 1
6
*/
by _Yonder_ @ 2024-08-04 15:55:38
@RY111 我的std输出0
by _Yonder_ @ 2024-08-04 15:58:22
@RY111 一般都是字典序的问题,建议先补充对斜对角线的判定
by RY111 @ 2024-08-04 16:07:58
@Yonder 好嘞谢谢了