提交时间:2024-12-15 12:47:25

运行 ID: 58735

#include <iostream> #include <vector> #include <algorithm> int main() { int n, k; std::cin >> n >> k; // 创建一个包含1到n的序列 std::vector<int> seq(n); for (int i = 0; i < n; ++i) { seq[i] = i + 1; } // 只对前k个元素进行排列(但这里我们实际上对整个序列进行了排列,然后只输出前k个元素) // 注意:这种方法在n很大而k很小的时候不是最高效的,因为它生成了所有n!的排列 // 但对于理解next_permutation的用法和演示目的来说,这是可以的 // 对序列进行排序,以确保我们从字典序最小的排列开始 std::sort(seq.begin(), seq.end()); do { // 只输出前k个元素作为当前排列 for (int i = 0; i < k; ++i) { std::cout << seq[i] << " "; } std::cout << std::endl; } while (std::next_permutation(seq.begin(), seq.end())); return 0; }