在 C 中确定组合可能是一项具有挑战性的任务,特别是当您正在寻找处理不同输入值的灵活解决方案时。
解决此问题的一个深思熟虑的方法是使用标准 C 库中的 next_permutation 函数。该函数增量地生成向量的所有排列。以下是如何利用此函数:
#include <iostream> #include <algorithm> #include <vector> int main() { int n, r; std::cin >> n; std::cin >> r; std::vector<bool> v(n); std::fill(v.end() - r, v.end(), true); do { for (int i = 0; i < n; ++i) { if (v[i]) { std::cout << (i + 1) << " "; } } std::cout << "\n"; } while (std::next_permutation(v.begin(), v.end())); return 0; }
此方法有效地创建一个带有 r 选择器值的选择数组 (v)。随后,它会迭代此选择数组的所有排列,打印所选位置的相应集合成员。
例如,如果您提供输入“5 2”(S = {1, 2, 3, 4 , 5} 且 r = 2),该算法将输出:
1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
该方法为在 C 中生成组合提供了一种高效且通用的解决方案.
以上是如何在 C 语言中高效地生成组合?的详细内容。更多信息请关注PHP中文网其他相关文章!