例如:给定一个数组(全是整型的)例如:array=[12,23,11,33,15,24] 和一个和数sum例如:46求出一个子数组使得这个子数组的所有元素的和为sum(46).(例childArray=[12,23,11])除了通过遍历所有的子数组的方式,还有没有其他高效一点的方式?
解决方案 »
- 关于SAX解析Xml的一点心得体会
- 如何format一个BigDecimal
- 关于面向对象的思想解决数三退一算法
- 怎么用installshield制作SWT安装程序~急~在线等
- 怎么判断一个字符串的末尾是 \r 啊?
- JAVA打印等腰三角形
- 急!-能编译能运行!就是JtableI不显示!(求教高手!)
- GUI设计问题:如何在程序中添加系统最大化与最小化按钮
- 今天是平安夜 不信教 但多一个高兴的节日也不错 可是发现csdn对java的极度不尊重 感到很气愤!!!
- 哪里有中文的JDK下载?急!在线等待!
- 类型不匹配错误。利用Java反射技术将查询结果封装为对象
- 怎么在swing中使用进度条,显示一个函数的运行进度?
做些剪枝
前几天也有人问过这问题 public static void main(String[] args) {
int[] nums = {12,23,11,33,15,24};
method(nums, 46);
}
public static void method(int[] nums, int sum){
List<Integer> list = new LinkedList<Integer>();
method(nums, sum, list, -1);
}
private static void method(int[] nums, int sum, List<Integer> list, int index){
if(sum == 0){
for(int i : list){
System.out.printf("%d ", i);
}
System.out.println();
}else if(sum > 0){
for (int i = index + 1; i < nums.length; i++) {
list.add(nums[i]);
method(nums, sum - nums[i], list, i);
list.remove(list.size() - 1);
}
}
}