递归法求数组内是否存在几个数的和与所给的目标相等?
2017-09-21 19:23
316 查看
题目:给定一个整数数组,能选择该数组内的某些整数,让它们的和与给定的目标一样吗?这是一个典型的递归回溯问题。一旦你理解递归回溯策略这个问题,你可以在许多问题上使用相同的模式去搜索空间的选择,而不是看整个数组,我们的习惯是考虑从索引的数组开始和继续的数组。调用者可以指定整个数组只是通过从0开始,不需要循环——递归调用简化数组。
例如:
groupSum(0, [2, 4, 8], 10) → true
groupSum(0, [2, 4, 8], 14) → true
groupSum(0, [2, 4, 8], 9) → false
请实现如下函数:
public boolean groupSum(int start, int[] nums, int target) {
}
代码如下:
运行结果:
例如:
groupSum(0, [2, 4, 8], 10) → true
groupSum(0, [2, 4, 8], 14) → true
groupSum(0, [2, 4, 8], 9) → false
请实现如下函数:
public boolean groupSum(int start, int[] nums, int target) {
}
代码如下:
package my_java; import java.util.Scanner; public class GroupSum { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int start = scanner .nextInt(); int [] nums = new int[3]; for(int i=0; i<3; i++){ nums[i] = scanner.nextInt(); } int target = scanner .nextInt(); System.out.println(groupSum(start,nums,target)); } //调用递归 public static boolean groupSum(int start, int[] nums, int target) { if (start >= nums.length) return (target == 0); if (groupSum(start + 1, nums, target - nums[start])) return true; if (groupSum(start + 1, nums, target)) return true; return false; } }
运行结果:
相关文章推荐
- 给定一个n个整数的数组S,是否存在S中的4个数,使得a + b + c + d = target。 在数组中找出所有唯一的四元组,给出目标的总和。
- A B两个相同长度整数数组,判断相同下标对应值是否相等,true或者false 存在布尔数组C中
- 判断二叉树,是否存在一条根到叶子的路径和,与一个指定的目标数字相等
- Javascript比较两个数组是否相等(存在重复元素)
- java判断String字符串数组中是否存在某个值
- Java测试二: 这个方法搜索一个字符数组中是否存在某个字符
- Java-数组转List-判断一个数是否存在数组/List中
- JS 比较两个数组是否相等 是否拥有相同元素
- C++ primer 5 3.5.3节3.36(彩票数组判断是否相等)
- C#中怎么判断一个数组中是否存在某个数组值
- 判断数组中是否存在重复项
- php中查找数组中是否存在某个元素
- jquery比较两个数组是否相等,且找出不等的值。
- leetcode 1 Two Sum(在无序数组中找两个数之和与目标值相等,两种方法)
- 从一个数组中查找和目标数最近的或者相等的数
- 请高手指点,简单的几个数组操作方法不知道是否可以有更好的改进方法或者更简单的方法?
- 程序员面试题目总结--数组(四)【数列中符合条件数对的个数、数组是否存在重复元素、重新排列数组使数组左边为奇数,右边为偶数、数组中的第二大数、数组中的最小值和最大值】
- 用array_search 数组中查找是否存在这个 值
- jquery判断值是否存在于数组中
- js使用数组判断提交数据是否存在相同数据