做教案找资料有哪些网站学做简单网站
做教案找资料有哪些网站,学做简单网站,搜房网站建设分析,企业网站可概括为思路分析#xff1a;
深度优先搜索 (DFS)#xff1a; 通过递归实现#xff0c;尝试从数字 1 到 9 中选择可能的数字#xff0c;构建和为 n#xff0c;长度为 k 的组合。递归函数 dfs#xff1a; 接收参数#xff1a;result 为最终结果集#xff0c;path 为当前正在生成…
思路分析
深度优先搜索 (DFS) 通过递归实现尝试从数字 1 到 9 中选择可能的数字构建和为 n长度为 k 的组合。递归函数 dfs 接收参数result 为最终结果集path 为当前正在生成的组合n 为目标和k 为组合长度startn 为当前选择的数字起始位置nownum 为当前组合的和。遍历当前可能的数字更新当前组合的和和将当前数字加入临时结果集。如果当前组合的和等于目标值 n且临时结果集的大小等于目标长度 k则将其加入最终结果集。否则继续递归生成组合注意起始数字更新为 i1。回溯过程中撤销选择继续尝试其他可能的组合。主函数 创建空的结果集 result 和临时结果集 path。调用深度优先搜索函数 dfs从数字 1 开始生成组合。返回最终结果。
class Solution {// 定义深度优先搜索函数用于生成组合void dfs(vectorvectorint result, vectorint path, int n, int k, int startn, int nownum) {// 遍历当前可能的数字for (int i startn; i 9; i) {// 如果当前数字加上当前和已有和超过目标值 n则跳出循环因为后续数字只会更大if (nownum i n)break;// 更新当前和和将当前数字加入临时结果集nownum i;path.push_back(i);// 如果当前和等于目标值 n并且临时结果集的大小等于目标长度 k则将结果加入最终结果集if (nownum n path.size() k)result.push_back(path);else {// 继续递归生成组合注意起始数字更新为 i1dfs(result, path, n, k, i 1, nownum);}// 回溯撤销选择继续尝试其他可能的组合nownum - i;path.pop_back();}return;}public:vectorvectorint combinationSum3(int k, int n) {// 存储最终结果的二维数组vectorvectorint result;// 存储当前正在生成的组合的临时结果vectorint path;// 调用深度优先搜索函数从数字 1 开始生成组合dfs(result, path, n, k, 1, 0);// 返回最终结果return result;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88567.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!