给定一个数组和一个数M,在数组中求一些数使它们的和最接近M------用递归法实现的。。。。。。
2011-11-17 22:28
225 查看
#include <iostream> #include <math.h> using namespace std; /*数组从a[from]到a[to],b[i]=true表示a[i]被选到,假设选到的那些数和为sum, 函数返回M-sum.....*/ int func(int* a, int from, int to, bool* b, int M) { if(from>to) return M; int k,t; k = func(a,from+1,to,b,M-a[from]); t = func(a,from+1,to,b,M); if(fabs(k)<fabs(t)) { b[from] = true; return func(a,from+1,to,b,M-a[from]);//这里必须重新调用func函数,使b[]符合要求 } else { b[from] = false; return func(a,from+1,to,b,M); } }
相关文章推荐
- 给定一个数组和一个数M,在数组中求一些数使它们的和最接近M------递归
- 给定一些数将这些数组合成一个新的数,并对它们由小到大排序
- 输入一个安升序排列的数组和一个数,在数组中找两个数,使它们的和正好是给定的那个数。o(n)
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- 程序员面试金典: 9.11 排序与查找 11.5有个排序后的字符串数组,其中散布这一些空字符串,编写一个方法,找出给定字符串的位置
- 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素
- 【Java】有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置
- 给定一个整数sum, 从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum
- 给定一个整数数组,两个数字的返回索引将它们加到一个特定的目标中。 您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
- 给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
- 给定一个数组,求x和y,使得abs(x+y)最接近零
- 给定两个排序的数组,其中A有足够空间容纳B,实现一个方法将B容纳进A并排序
- 给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
- 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现
- 346/5000 给定一个n个整数的数组S,在S中找到三个整数,使得总和最接近给定数量的目标。 返回三个整数的和。
- 【摘】给定一些单元格的坐标,如何判断它们是否能合并为一个单元格?
- 给定一个整数数组,返回两个数字的索引,使它们相加得到一个特定目标值
- 创建一个数组实现一些功能
- Java给定一个数组,数组元素是一些正整数,求这些正整数收尾详解得出的最大数或最小数
- (旋转数组问题)给定一个整数类型的循环有序数组,求循环数组的特定值,使用二分查找法(JAVA实现)