时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来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<bits/stdc++.h>
using namespace std;
int n=8;
int num[9]={0};
bool vis[9]={0};
void dfs(int step);
int main()
{
dfs(1);
return 0;
}
void dfs(int step)
{
if(step==n+1)
{
for(int i=1;i<=n;i++)
cout<<num[i]<<" ";
printf("\n");
return;
}
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
num[step]=i;
vis[i]=1;
dfs(step+1);
vis[i]=0;
}
}
}
另解:全排列函数next_permutation()
#include<bits/stdc++.h>
using namespace std;
int main()
{
int ans[8]={1,2,3,4,5,6,7,8};
do
{
for(int i=0;i<8;i++)
{
if(i!=0)
cout<<" ";
cout<<ans[i];
}
puts("");
}while(next_permutation(ans,ans+8));
}