当前位置:首页 > 未命名 > 正文内容

找出可能的合的组合

淙嶙5年前 (2020-07-21)未命名1187

描述


给出一组不重复的正整数,从这组数中找出所有可能的组合使其加合等于一个目标正整数 N,如:

一组数为 1, 2, 3,目标数为 4,那么可能的加合组合为:
1, 1, 1, 1
1, 1, 2
1, 2, 1
1, 3
2, 1, 1
2, 2
3, 1
注意相同的组合数字顺序不同也算一种,所以这个例子的结果是 7 种。


输入


一组不重复的正整数(, 隔开)以及目标正整数(与数组用空格隔开)


输出


所有可能的加合等于目标正整数 N 的组合种数


输入样例

1,2,3 4

输出样例

7

private static String solution(String line) {
    // 在此处理单行数据
   String[] parts = line.split(" ");
        String[] src = parts[0].split(",");
        int[] arr = new int[src.length];
        for (int i = 0; i < src.length; ++i) {
            arr[i] = Integer.parseInt(src[i]);
        }
        int result = fun(arr,Integer.parseInt(parts[1]));
        return String.valueOf(result);
    }
    public static int fun(int[] arr,int t) {
    int count = 0;
        for (int a : arr) {
            if (t == a) {
            count ++;
            } else if (t > a) {
            count += fun(arr,t - a);
            }
        }
        return count;
    }

相关文章

分库分表需要考虑的问题及方案

分库分表需要考虑的问题及方案

为什么要分库分表?解决单一数据库的性能问题。(通过分摊的思想解决独抗性能问题,分而治之)不管说是一个数据库还是说一台服务器,(CPU,磁盘,内存,IO)性能终究又上限,而使用中或预计使用中又达到了这个...

出现频率最高的前 K 个元素

出现频率最高的前 K 个元素

描述 有一个不为空且仅包含正整数的数组,找出其中出现频率最高的前 K 个数,时间复杂度必须在 O(n log n) 以内。 输入 一行数据包括两部分,一个正整数数组(数字间 ',' 分隔)和一个正整...

在虚拟机里新安装Ubuntu无法全屏问题

在虚拟机里新安装Ubuntu无法全屏问题

除了本文外还有一种 完美解决Ubuntu16.04虚拟机窗口全屏问题,或者安装VMware Tools,单个人感觉还是简单就好,所以选择敲个命令完事。(转)在win7中用虚拟机安装了Ubuntu 16...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。