链接:https://ac.nowcoder.com/acm/problem/15128
来源:牛客网
题目描述
老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来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
题意:略。
题记:两种解法,一种用next_permutation函数,一种用递归。
#include<bits/stdc++.h>
using namespace std;
int a[10];
int main(){
for(int i=1;i<=8;i++)a[i]=i;
do{
for(int i=1;i<=8;i++){
if(i!=1) cout<<' '<<a[i];
else cout<<a[i];
}
cout<<endl;
}while(next_permutation(a+1,a+1+8));
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int a[10];
int vis[10];
void solve(int u){
if(u==8){
for(int i=0;i<8;i++){
if(i)cout<<' '<<a[i];
else cout<<a[i];
}
cout<<endl;
return ;
}
else{
for(int i=1;i<=8;i++){
if(!vis[i]){
a[u]=i;
vis[i]=1;
solve(u+1);
vis[i]=0;
}
}
}
}
int main(){
solve(0);
return 0;
}