法1:裸的全排列
加点优化也可以很快---洛谷6ms
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=10005; 6 int read(){ 7 char c=getchar(); 8 int x=0; 9 while(c<'0'||c>'9') c=getchar(); 10 while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} 11 return x; 12 } 13 int n,m; 14 int c[N]; 15 int main(){ 16 n=read();m=read(); 17 for(int i=1;i<=n;i++) c[i]=read(); 18 for(int i=1;i<=m;i++) 19 next_permutation(c+1,c+n+1); 20 for(int i=1;i<=n;i++) printf("%d ",c[i]); 21 }
法2:编码解码
如白书第十章
以后再更新