输入正整数N,输出由1到N这N个数取出K个(1<=N<=10,1<=k<=N)的所有组合,每行一个组合,数与数之间有一个空格,从左到右按升序,两个组合中,第一个数小的优先输入,第一个数相同,比较第二个数,后面以此类推。C++
时间: 2024-09-14 20:13:00 浏览: 51
在C++中,要生成由1到N这N个数取出K个的所有组合,并按照指定的顺序输出,我们可以使用递归方法来实现。下面提供了一个示例代码,用于生成并打印所有可能的组合:
```cpp
#include <iostream>
#include <vector>
// 用于存储当前组合
std::vector<int> combination;
// 用于打印组合的函数
void printCombination(const std::vector<int>& combination) {
for (size_t i = 0; i < combination.size(); ++i) {
std::cout << combination[i] << " ";
}
std::cout << std::endl;
}
// 递归函数用于生成所有组合
void generateCombinations(int start, int n, int k) {
if (combination.size() == k) {
printCombination(combination);
return;
}
for (int i = start; i <= n; ++i) {
combination.push_back(i);
generateCombinations(i + 1, n, k);
combination.pop_back();
}
}
int main() {
int n, k;
std::cout << "请输入N和K的值(用空格分隔):";
std::cin >> n >> k;
// 清空组合数组并开始生成组合
combination.clear();
generateCombinations(1, n, k);
return 0;
}
```
该代码首先定义了两个函数:`printCombination`用于打印一个组合,`generateCombinations`用于递归地生成所有组合。`main`函数中,程序会提示用户输入N和K的值,并开始递归生成组合的过程。
阅读全文