第一次用next_permutation这个函数,不太会用,写下了第一段代码,麻烦不少,一堆TLE,看完大佬题解做了一些改进,第二段代码所示,可以AC;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;
int a[n]={};
for(int i=0;i<n;i++){
a[i]=i+1;
}
int m;cin>>m;
vector<int> temp;temp.resize(n);
for(int i=0;i<n;i++){
cin>>temp[i];
}
int flag=0;
do{
if(flag==1){
if(m>1){
m--;
}else{
for(int i=0;i<n;i++){
if(i==0) cout<<a[i];
else cout<<' '<<a[i];
}
break;
}
}
vector<int> ppp;ppp.resize(n);
for(int i=0;i<n;i++){
ppp[i]=a[i];
}
if(temp==ppp){
flag=1;
}
}while(next_permutation(a,a+n));
return 0;
}
下面是AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;
int m;cin>>m;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
do{
if(m>=1){
m--;
}else{
for(int i=0;i<n;i++){
if(i==0) cout<<a[i];
else cout<<' '<<a[i];
}
break;
}
}while(next_permutation(a,a+n));
return 0;
}