求数组中和为给定值的所有子序列
来源:互联网 发布:毕向东java基础课件 编辑:程序博客网 时间:2024/05/22 12:38
package com.zxt.algorithm;import java.util.ArrayList;import java.util.Arrays;/** * 求数组中和为给定值的所有子序列 * * 如:数组[1,2,3,4,5,6],sum=7时,满足条件的子数组有[1,2,4],[3,4],[2,5],[1,6]; * * @author zxt * */public class FixedSumSequence {public static void main(String[] args) {int[] arr = { 3, 2, 5, 5, 5, 6, 1, 4, 4 };// 数组升序排序Arrays.sort(arr);ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();boolean[] visited = new boolean[arr.length];// 求和为sum的所有组合数backTrack(arr, visited, 0, 0, 7, lists);System.out.println(lists);System.out.println(lists.size());}// 求一个数组中和为定值的所有子序列public static void backTrack(int[] input, boolean[] visited, int n, int sum, int key,ArrayList<ArrayList<Integer>> lists) {// 如果条件为:if (sum % key == 0 && sum != 0) 则是求所有和为定值整数倍的序列if (sum == key) {ArrayList<Integer> list = new ArrayList<Integer>();for (int j = 0; j <= n; j++) {if (visited[j]) {list.add(input[j]);}}lists.add(list);return;}for (int i = n; i < input.length; i++) {if (!visited[i]) {sum += input[i];visited[i] = true;if (i != input.length - 1) {backTrack(input, visited, i + 1, sum, key, lists);} else {backTrack(input, visited, i, sum, key, lists);}visited[i] = false;sum -= input[i];// 重复的元素只统计一次,否则会出现重复(而次操作的前提是,序列已经排序。所以参数input数组是排序好的)while (i < input.length - 1 && input[i] == input[i + 1]) {i++;}}}}}
阅读全文
1 0
- 求数组中和为给定值的所有子序列
- 求数组中和为给定数所有的组合
- 求数组中和为给定值的所有组合 (POJ 1564)
- 求二叉树中和为给定值的所有路径
- 求数组中和最大的子序列
- 求数组中和最大的子序列
- 求数组中和为给定数的所有组合的个数
- 阿里巴巴笔试题--求数组中和为给定数所有的组合
- 阿里巴巴笔试题--求数组中和为给定数所有的组合
- 阿里巴巴笔试题--求数组中和为给定数所有的组合
- 阿里巴巴笔试题--求数组中和为给定数所有的组合
- 和为n连续正数序列 & 排序数组中和为给定值的两个数字
- 求解所有集合中和为给定值的组合
- 求数组中和最大子序列
- 求二叉树中和为给定值的路径
- 求数组中和为固定数的所有对
- 排序数组中和为给定值的两个数字
- 排序数组中和为给定值的两个数字
- 弹框
- 1075. 链表元素分类(25)-PAT乙级真题
- linux部署tomcat并使用默认的jdk
- Delphi RTTI 动态创建Form
- JVM垃圾回收算法和内存分配策略
- 求数组中和为给定值的所有子序列
- JAVA开发环境的搭建(配置JAVA开发环境)
- 基于京东云服务器来搭建javaWeb 运行环境
- 1134. Vertex Cover (25)-PAT甲级真题
- 安卓自定义AlertDialog弹出框
- django中render()与render_to_response()区别
- socket服务器开发中的SO_REUSEADDR选项与让人心烦的TIME_WAIT
- 1135. Is It A Red-Black Tree (30)-PAT甲级真题
- bzoj2095 Bridges