【小米OJ-找出可能的合的组合】深搜(dfs)

import java.util.*;

public class Main {
    static int ans;
    static int num[];
    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        String line;
        while (scan.hasNextLine()) {
            ans = 0;
            line = scan.nextLine().trim();

            String [] str = line.split(" ");
            String [] str1 = str[0].split(",");
            num = new int[str1.length];
            int sum = Integer.parseInt(str[1]);
            for(int i=0;i<str1.length;i++) num[i] = Integer.parseInt(str1[i]);

            dfs(sum,num.length-1);
            System.out.println(ans);
        }
    }
    private static void dfs(int target,int cur){
        if(target<0||cur<0) return;

        if(target==0) {
            ans++;
            return;
        }
         ///顺序可以变动
        dfs(target-num[cur],cur-1);///加上当前数字的值,遍历下一个数字
        dfs(target-num[cur],cur);/// 加上当前数字的值,继续遍历该数字
        dfs(target,cur-1);///不加上当前的数字的值,遍历下一个数字

    }
}

  

 

不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
原文地址:https://www.cnblogs.com/wszhu/p/12810597.html