数列中和为定值的所有组合
来源:互联网 发布:2017年重庆网络春晚 编辑:程序博客网 时间:2024/05/17 01:50
问题描述
输入两个整数 n 和 m,从数列1,2,3……n中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。
算法
设该算法为f(m, n),返回一个数组集合r
则f(m, n-1)返回集合r1
且f(m-n, n-1)返回集合r2
在r2中的每个数组中加入元素n,得到r3
则r = r1 + r3
终止条件是n <= 0或m <= 0
算法思路
利用分治的思想,缩小问题规模,迭代解决问题
m是定值,n是标志规模的量,所以希望每次缩小n的规模(n-1)
那如何从n-1规模的问题答案中得到n规模的答案呢?
首先,(m, n-1)的答案是(m, n)的答案一个子集
其次,(m, n)的答案相对(m, n-1)的答案,多出了包含元素n的所有组合
如何求上述包含元素n的所有组合?只需要求出所有不含n且和为m-n的组合,然后各加入一个n既可
要求不含n,所以问题规模定义为n-1,要求和为m-n,所以参数定为m-n
综上,得以上算法
0 0
- 数列中和为定值的所有组合
- C++求数组中和为定值的组合
- 寻找树中和为定值的所有路径
- 求解所有集合中和为给定值的组合
- 找出二叉树中和为某一定值的所有路径
- 找出数组中和为N+1的的所有组合
- 求数组中和为给定数所有的组合
- 求数组中和为给定值的所有组合 (POJ 1564)
- 自己编写的一个小程序——求一个数组中和为定值的组合
- [算法]找数组中和为定值的数组对
- 二叉树中和为某一定值的路径
- 寻找数组中满足和为定值的两个数或所有可能组合
- 打印和为N的所有连续数列组合
- 寻找和为定值的组合
- 求数组中和为某个值的一个组合
- 求数组中和为某一值的全部组合
- 回溯法-数组中和为固定值的组合
- 算法题:求指定数组中和为N的出现的所有组合(二)
- 创建套接字出错
- Android Opengl es 写字 笔记
- 设计模式之建造者模式
- Android 如何把Launcher桌面的每一屏修改为x*x(例如5*5)的布局?
- C++ String类
- 数列中和为定值的所有组合
- Android 如何实现usb驱动自动安装?
- java 判断json 某key是否存在
- SpringAOP概念综述
- hdu 1028
- MyEclipse设置默认工作空间
- java生成PDF
- 上传app
- 如何阅读别人写的MFC程序