题目描述
blablabla
样例
#include<stdio.h>
#define N 10
int n;
int state[N];//记录状态,0表示还没放数,1~n表示放了哪个数
int used[N];//1表示用过,0表示还未用过
int main()
{
scanf("%d",&n);
dfs(1);
return 0;
}
void dfs(int u)
{
if(u>n)//边界
{
for(int i=1;i<=n;i++) printf("%d ",state[i]);
printf("\n");
return;
}
//依次枚举每个分支,即当前位置可以填哪些数
for(int i=1;i<=n;i++)
{
if(!used[i])
{
state[u]=i;
used[i]=1;
dfs(u+1);
//恢复现场
state[u]=0;
used[i]=0;
}
}
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla