void dfs(int u) // u表示遍历到的行数
{
if (u == n) // 当深度遍历到最下面一层的时候,说明这个答案得出,直接输出这个答案
{
for (int i = 0; i < n; i ++) cout << path[i] << ' ';
puts("");
return;
}
for (int i = 1; i <= n; i ++) // 枚举目前已有的n个数字
{
if (!st[i]) // 如果第i位是1,表示当前数已经被用过了,需要跳过
{
path[u] = i;
st[i] = true;
dfs(u + 1);
st[i] = false; //恢复现场
}
}
}