P1088 火星人
这里用到了一个特别神奇的函数 STL里面algorithm头文件的一个函数 next_permutation() 返回给定范围中的元素组成的下一个按字典序的排列 即就是直接按照题意进下一个
AC代码:
1 #include<bits/stdc++.h> 2 #define pi acos(-1) 3 typedef long long ll; 4 typedef unsigned long long ull; 5 using namespace std; 6 7 namespace io { 8 const int SIZE = 1e7 + 10; 9 char inbuff[SIZE]; 10 char *l, *r; 11 inline void init() { 12 l = inbuff; 13 r = inbuff + fread(inbuff, 1, SIZE, stdin); 14 } 15 inline char gc() { 16 if (l == r) init(); 17 return (l != r) ? *(l++) : EOF; 18 } 19 void read(int &x) { 20 x = 0; char ch = gc(); 21 while(!isdigit(ch)) ch = gc(); 22 while(isdigit(ch)) x = x * 10 + ch - '0', ch = gc(); 23 } 24 } using io::read; 25 26 bool cmp(const int &a, const int &b){ 27 return a > b; 28 } 29 30 int main(){ 31 ios::sync_with_stdio(false); 32 int n, m; 33 cin>>n>>m; 34 int a[10005]; 35 memset(a, 0, sizeof(a)); 36 for (int i = 1; i <= n; i++) cin>>a[i]; 37 while (m--) next_permutation(a + 1, a + n + 1); 38 for (int i = 1; i < n; i++) cout<<a[i]<<' '; 39 cout<<a[n]<<endl; 40 return 0; 41 }