想按字典序从大到小输出 {1, 2, 3} 的全部 6 个排列(321 打头、123 收尾):
vector<int> v = {2, 1, 3};
//(横线)
do {
for (int x : v) cout << x;
cout << "\n";
} while (prev_permutation(v.begin(), v.end()));
横线处应填入( )。
- A.
sort(v.begin(), v.end(), greater<int>());——prev_permutation 沿字典序只往后退,想一个不漏必须先排成最大排列 - B.
sort(v.begin(), v.end());——先排成最小排列再枚举 - C. 什么都不填——do-while 第一轮会自动把 v 调整成 321
- D.
reverse(v.begin(), v.end());——先反转一下就能得到最大排列