直接套板子的水题。。。。
附代码:
#include <iostream>
#include <algorithm>
using namespace std;
int A[10005];
int main(){
int a,b; cin>>a>>b;
for(int i=0;i<a;i++){
cin>>A[i];
}
while(b--){
int l=-1,r=-1;
for(int i=a-2;i>=0;i--){
if(A[i]<A[i+1]){
l=i; break;
}
}
for(int i=a-1;i>=0;i--){
if(A[i]>A[l]){
r=i; break;
}
}
swap(A[l],A[r]);
sort(A+l+1,A+a);
}
for(int i=0;i<a;i++) cout<<A[i]<<" "; cout<<endl;
}
当然这道题用全排列函数也能做next_permutation(将序列排成其下一个序列)
prev_permutation(将序列排成其上一个序列)
附代码:
#include <iostream>
#include <algorithm>
using namespace std;
int A[10005];
int main(){
int a,b; cin>>a>>b;
for(int i=0;i<a;i++){
cin>>A[i];
}
while(b--){
next_permutation(A,A+a);
}
for(int i=0;i<a;i++) cout<<A[i]<<" "; cout<<endl;
}