0
已解决
许金夫
初级天翼
初级天翼
经验值:800
题目描述 Description
给出一个正整数n,以及从1到n的一个排列,试求出这个排列的后一个排列。
输入描述 Input Description
第一行,一个正整数n
第二行,从1到n的一个排列
输出描述 Output Description
所给出排列的下一个排列,数据保证存在下一个排列
样例输入 Sample Input
3 1 2 3
样例输出 Sample Output
1 3 2
数据范围及提示 Data Size & Hint
n<=20
我的WA0分代码:
#include <bits/stdc++.h>
using namespace std;
int used[10];
int pl[10];
int a[10];
int n,cnt=0;
bool f=1;
int k=0;
void dfs(int t){
if(t>n){
if(k==0){
for(int i=1;i<=n;i++){
if(a[i]!=pl[i])f=0;
}
}
if(f==1)k++;
if(k==2){
for(int i=1;i<=n;i++){
cout<<pl[i]<<" ";
}
}
return ;
}
if(k!=2){
for(int i=1;i<=n;i++){
if(used[i]==0){
pl[t]=i;
used[i]=1;
dfs(t+1);
used[i]=0;
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs(1);
return 0;
}
许金夫在2020-05-08 20:11:13追加了内容
顶