首页 > 试题广场 >

求和

[编程题]求和
  • 热度指数:21405 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来

输入描述:
每个测试输入包含2个整数,n和m


输出描述:
按每个组合的字典序排列输出,每行输出一种组合
示例1

输入

5 5

输出

1 4<br/>2 3<br/>5
头像 健康快乐最重要
发表于 2020-03-08 19:03:52
dfs真的好难哦。递归真的好难哦。这道题用dfs+回溯逐个遍历结果集。 通过不断的遍历每一个结果,然后求解。建议按照代码在脑子里走一遍。 #include<iostream> #include<vector> using namespace std; vector<i 展开全文
头像 软日20182073
发表于 2022-02-16 21:56:23
/** * 递归时使用String记录,后续去重有点麻烦,欢迎斧正! */ import java.io.*; import java.util.*; public class Main{ static int m; // 存放可行解字符串,存在重复解 static Arra 展开全文
头像 软日20182073
发表于 2022-02-16 22:04:50
原来不用vis数组也可哈哈,不用去去重了,更新版! import java.io.*; import java.util.*; public class Main{ static int m, n; static ArrayList<String> strList = n 展开全文
头像 大厂算法岗必拿下
发表于 2021-09-19 03:57:01
这是求和得常用DFS回溯套路 #include<bits/stdc++.h> using namespace std; void dfs(vector<vector<int>>& ans, vector<int> &res,int 展开全文
头像 郑州大学
发表于 2023-05-14 23:12:35
import java.util.*; public class Main { /** * 解题思路: (深度优先算法dfs) * 还是那句总结的话: * 寻找最优多用动态规划 * 输出所有情况多用dfs * 因为本题是需要按字典序排序输出 展开全文
头像 重生之我要当分子
发表于 2025-01-03 16:29:59
解题思路 回溯法:使用回溯算法生成所有可能的组合。 递归:在递归过程中,选择当前数字或不选择,直到达到目标和m。 字典序:由于我们从小到大选择数字,生成的组合自然是按字典序排列的。 关键点: 使用回溯法生成组合。 维护当前和,判断是否达到目标。 使用列表存储当前组合,达到目标时输出。 算法步 展开全文