Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
188209 yanzu_9527 组合问题 C++ 通过 100 5 MS 288 KB 1447 2024-12-01 10:07:09

Tests(12/12):


#include <iostream> #include <vector> using namespace std; class Solution { public: vector<vector<int>> result; // 存储最终的组合结果 vector<int> path; // 用来存放当前的组合 // 回溯函数 void backtracking(int n, int k, int startindex) { // 如果当前组合的大小等于 k,说明已经找到一个满足条件的组合 if (path.size() == k) { result.push_back(path); // 将当前组合加入结果集 return; } // 从 startindex 开始遍历 for (int i = startindex; i <= n; i++) { path.push_back(i); // 选择当前数字 backtracking(n, k, i + 1); // 递归,搜索下一层 path.pop_back(); // 回溯,撤销当前选择 } } // 主函数,计算从 1 到 n 中选 k 个数的所有组合 vector<vector<int>> combine(int n, int k) { result.clear(); // 清空结果集 path.clear(); // 清空当前组合 backtracking(n, k, 1); // 从 1 开始进行回溯 return result; } }; int main() { Solution sol; int n , k; cin>>n>>k; vector<vector<int>> combinations = sol.combine(n, k); // 输出所有组合 for (const auto& comb : combinations) { for (int num : comb) { cout << num; } cout << endl; } return 0; }


测评信息: