【小米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);///不加上当前的数字的值,遍历下一个数字
}
}
不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。


浙公网安备 33010602011771号