2018年全国多校算法寒假训练营练习比赛(第四场)
链接:https://www.nowcoder.net/acm/contest/76/H
来源:牛客网
题目描述
老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来
1-8的全排序,我就让你喝,这次绝不耍你,你能帮帮和尚么?
输入描述:
无
输出描述:
1~8的全排列,按照全排列的顺序输出,每行结尾无空格。
示例1
输入
No_Input
输出
Full arrangement of 1~8
备注:
1~3的全排列 : 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
#include <cstdio>
#include <cstring>
int a[10];
int p[10];
int n;
void dfs(int x)
{
if (x > n)
{
for (int i = 1; i < n; i++)
{
printf("%d ", a[i]);
}
printf("%d\n", a[n]);
return ;
}
for (int j = 1; j <= n; j++)
{
if (!p[j])
{
p[j] = 1;
a[x] = j;
dfs(x + 1);
p[j] = 0;
}
}
}
int main()
{
n = 8;
memset(p, 0, sizeof(p));
dfs(1);
getchar();
return 0;
}
下面是网上一位大神的代码:
#include<bits/stdc++.h>
using namespace std;
int main ()
{
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8};
do
{
for(int i = 0; i < 8; i++)
{
printf(i == 7 ? "%d\n" : "%d ", a[i]);
}
}
while(next_permutation(a, a + 8));
return 0;
}