首先感谢刘大大;
字典序排列的下一个排列仅仅比上一个排列大一点点。可以用STL中的next_permutation解决(不管是1~n还是可重复排列都适用)
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int p[10];
for(int i=0;i<n;i++)
{
cin>>p[i];
}
sort(p,p+n);
do{
for(int i=0;i<n;i++) cout<<p[i];
cout<<endl;
}while(next_permutation(p,p+n));
return 0;
}