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<I
求数组中和为给定值的所有子序列
最新推荐文章于 2022-01-14 14:15:52 发布
这是一个Java程序,用于找出数组中所有和为目标值的子序列。通过回溯算法实现,先对数组进行排序,然后遍历并标记已访问的元素,递归搜索满足条件的子序列。
摘要由CSDN通过智能技术生成