已知有如下几个数:10.80 23.30 18.00 32.00 15.50
已知和为50.80
要求输出所有可能相加因子的组合
例如此例应输出 18.00 32.00 10.80
ps:相加因子数目不限
------解决方案--------------------
穷举法。。。
------解决方案--------------------
- C/C++ code
#include "stdio.h"#define MAX_NUM 100#define DEQUAL(a,b) (fabs((a)-(b)) < 1e-6)//输入数组double numbers[MAX_NUM];//输入数组大小int size;//第i个数起到末尾的和double sum[MAX_NUM];//第i位的数字是否选择上int flag[MAX_NUM];//数字的和double total;//当前累加的和double currentSum;//输入初始化操作void Input(){}//根据flag数组输出选择上的数void Output(){}void DFS(int depth){ if(depth == size || currentSum+sum[depth] < total)return; if(DEQUAL(currentSum+numbers[depth],total)) { flag[depth] = 1; Output(); flag[depth] = 0; } else if(currentSum+numbers[depth] < total) { currentSum += numbers[depth]; flag[depth] = 1; DFS(depth+1); flag[depth] = 0; currentSum -= numbers[depth]; } DFS(depth+1);}int main(){ return 0;}
------解决方案--------------------
已知有如下几个数:10.80 23.30 18.00 32.00 15.50
已知和为50.80,要求输出所有可能相加因子的组合
本来就是一个用来作为算法入门的小例子,对于此题,可能性也很少
穷举法的小例子
------解决方案--------------------
可能用二叉树之类的能好一些,但是一时想不明白,记得看过类似的题目
------解决方案--------------------
看起来很麻烦啊 以前没写过。 关注中。