您的位置:首页 > 其它

递归法求数组内是否存在几个数的和与所给的目标相等?

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) {

 

}

代码如下:

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;
}

}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐