输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来

输入描述:
每个测试输入包含2个整数,n和m
输出描述:
按每个组合的字典序排列输出,每行输出一种组合
示例1

输入

5 5

输出

1 4

2 3

5

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;vector<int> v;
void find_ans(vector<int> ret, int cur_pos, int n, int cur_sum, int sum) {if (cur_pos >= n) return ;cur_sum += v[cur_pos];ret.push_back(v[cur_pos]);if (cur_sum == sum) {for (int i = 0; i < ret.size() - 1; ++i) {cout << ret[i] << " ";}cout << ret[ret.size() - 1];cout << endl;return ;} else if (cur_sum > sum) { // 大于sum,就没必要再继续往下了,剪枝操作return ;}// 把当前的下标位置的值放进去,继续下一个位置find_ans(ret, cur_pos+1, n, cur_sum, sum);// 不要当前值,从下一个位置搜索,意思大概就是不从1开始找了,从2开始找vector<int>::iterator it = ret.end();--it;ret.erase(it);find_ans(ret, cur_pos+1, n, cur_sum - v[cur_pos], sum);// 总体思想就是当前位置的数是要还是不要的事情,列出来所有的可能,挨个输出就行了
}
int main() {int n, num;cin >> n >> num;for (int i = 0; i < n; ++i) {v.push_back(i+1);}// 因为如果n大于num的话,那么num后面的数字肯定不需要再考虑了,所以我们只需要考虑从1~num之间的可能组合就行了if (n >= num) n = num;vector<int> ret;int sum = 0;// 利用递归的方法来做,0是当前位置,n是最大下标,sum是当前和,num就是要求的结果find_ans(ret,0,n,sum,num);return 0;
}

求和(1,2,3.....n使其和为m的所有情况)相关推荐

  1. 一文掌握爱因斯坦求和约定 einsum

    爱因斯坦跟 NumPy 有关系吗?没有,但他提出了一个针对数学公式的符号简化办法,即爱因斯坦求和约定(Einstein Summation Convention)或者叫爱因斯坦标记法(Einstein ...

  2. Uipath处理excel-对某列求和并写入数据

    Uipath处理excel-对某列求和并写入数据 应用案例:需要将excel中C列求和,并将总金额写入最后一行对应的列(使用于行数不固定的情况下) 流程设计: Filter data table: 主 ...

  3. python机器学习案例系列教程——优化,寻找使成本函数最小的最优解

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 举个例子我们来了解一下优化问题,学校为2n个同学分配n个宿舍,每个宿舍两个床铺,每个同学提交了自己最想住的宿舍和其次想住的宿舍(只选房 ...

  4. excel排序求和:如何统计前几名数据合计 上篇

    什么叫做统计前几名合计呢?先看看动画演示吧: 可以看到,数据按照销售数量从高往低排列,选择一个名次,就可以对前几名的销售数量求和. 这类问题在很多与数字排名有关的情况下都用得上,例如对前几名考试成绩求 ...

  5. Mongodb 求和

    有两种命令模式 1. db.houseInfo.aggregate([ { $match : { "province" : "天津"}}, { $group : ...

  6. Math Problem(等差数列求和)

    链接:https://ac.nowcoder.com/acm/contest/893/C 来源:牛客网 已知整数a,a3除192的余数是1.求区间[L,R]之间满足条件的a的累加和是多少? 输入描述: ...

  7. excel一列求和_Excel教程:自动求和的3个坑,你有没有被坑过?_搜狐汽车

    微信扫码观看全套Excel.Word.PPT视频 哈喽,大家好!说起我那表姐也是一位拥有十年经验的老财务了.可她最近却在自动求和上出了错.可能有的小伙伴会纳闷了"一点即可得出结果的自动求和都 ...

  8. 使电脑拥有公网ip方法

    先判断是否有公网ip 在搜索引擎中输入ip,会进入到检测 ip的网站,然后用检测出来的ip访问自已的服务顺,如果能访问就证明有公网ip. 使电脑拥有公网ip的方法 情况一 家里拉的宽带是有公网ip的, ...

  9. 易于使用的人工智能_使AI更易于访问

    易于使用的人工智能 重点 (Top highlight) 人工智能 (Artificial Intelligence) According to McKinsey, a lack of underst ...

最新文章

  1. json 的简单应用
  2. 对话尹成杰三农谋定压舱石-农业大健康·万祥军:稳农保供
  3. 前后端分离项目部署上线详细教程
  4. atoi和itoa函数实现
  5. java调用c 返回值_推荐--Linux平台下Java调用C函数(补充关于String类型函数返回值)...
  6. Qt_加速编译 快速编译 make -j4
  7. nb模块怎么访问php文件,一个非常NB的动态聊天程序_PHP教程
  8. 重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
  9. 阿里云弹性云桌面、传统PC和虚拟桌面VDI区别对比
  10. Oracle之同义词
  11. 网络协议 -- HTTPS(3)SSL/TSL协议
  12. jQuery下载所有版本(实时更新……)
  13. Git上修改分支名称
  14. 语音特征提取 matlab,基于matlab的语音信号特征提取方法研究
  15. 天啊!吃饭用的勺子都联网了~手把手带你DIY一款智能百味勺子
  16. goldendb基于mysql_实战 | 追求卓越,砥砺前行 ——中信银行 GoldenDB 分布式数据库转型实践...
  17. linux 下卸载torch,在Ubuntu14.04安装torch7笔记
  18. 软件评测师——准备阶段
  19. SDUSTOJ 1191 - 剪子包袱锤游戏 ( 结构体 函数的巧妙应用 )
  20. 奋斗吧,程序员——第五十一章 黑云压城城欲摧,甲光向日金鳞开

热门文章

  1. 艾伟:WM有约(一):你好,CF
  2. 使用数据库镜像保障高可用的数据库应用(下)
  3. .Net Micro Framework研究—让MF支持鼠标
  4. [转]厚积薄发,有的放矢--李开复博士给中国计算机系学生的建议
  5. 33muduo_net库源码分析(九)
  6. 【论文写作】SpringMVC学籍管理系统如何画用例图(2)
  7. java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
  8. 滚动后mouseleave失效_滚动直线导轨副用钳制器可靠性试验设计
  9. linux 目录提权,【安全科普】Linux提权——利用可执行文件SUID
  10. java 调用 spring,java中使用redis和spring中调用redis