生成全排列的c++函数

next_permutation

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
  int N, m;
  cin >> N;
  while(N--) {
    cin >> m;
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    do {
      for(int i = 0; i < m; ++i) cout << a[i];
      cout << endl;
    } while (next_permutation(a, a+m));
      //这里的a+m意思对a[0]到a[m-1]个元素排序
  }
}

当next_permutation(a, a+m)时,m = 3时,输出123,132,213,231,312与321,当m = 2时,输出12,21;
如果将a+m换成a+m-1,对于m = 3时,会输出123与213,对于m = 2时,只会输出12;

题目:
南阳OJ 第366题


版权声明:本文为aston5128原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。