2 条题解
-
4
● 引言:
STL
STL(Standard Template Library),即 标准模板库,是一个具有工业强度的、高效的C++程序库,内部包含了许多常用算法模板。
STL 全排列函数 next_permutation()
包含于头文件
<algorithm>
,将数字类型数据按照字典序全排列。基本格式:
int a[n]; do{ //代码块 } while(next_permutation(a, a+n));
WARNING:
-
next_permutation() 函数作用范围:自数组当前字典序始依次增大至最大字典序
eg.
int a[3]={1, 0, 2}; do{ for(int i=0; i<n; i++) printf("%d ", a[i]); printf("\n"); } while(next_permutation(a, a+3));
输出:
1 0 2
1 2 0
2 0 1
2 1 0
int a[3]={1, 0, 2}; sort(a, a+3); do{ for(int i=0; i<n; i++) printf("%d ", a[i]); printf("\n"); } while(next_permutation(a, a+3));
输出:
0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
-
next_permutation() 属于原地算法,会直接更新数组的值。如果“下一个排列”存在,函数返回
true
并执行排列,否则返回false
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main(){ char s[10]; scanf("%s", s); int const n=strlen(s); int t[10]; for(int i=0; i<n; i++) t[i] = i; do{ for(int i=0; i<n; i++) printf("%c ", s[t[i]]); printf("\n"); } while(next_permutation(t, t+n)); return 0; }
-
信息
- ID
- 419
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 87
- 已通过
- 36
- 上传者