import java.util.HashSet;
import java.util.Scanner;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileReader;
import java.io.File;
class Main
{
private final static int N = 3;
private int money[];
private int num[];
private HashSet<Integer> hs;
private void init()
{
money = new int[]{8, 10, 18};
num = new int[]{5, 4, 6};
hs = new HashSet<Integer>();
}
private void dfs(int cur, int sum)
{
for (int i = cur; i < N; i++) {
if (num[i] > 0) {
num[i]--;
hs.add(new Integer(sum + money[i]));
dfs(i, sum + money[i]);
num[i]++;
}
}
}
public int solve()
{
init();
dfs(0, 0);
return hs.size();
}
public void print()
{
System.out.print(hs);
}
public static void main(String[] args) throws IOException {
Main solver = new Main();
System.out.println(solver.solve());
}
}题目1072:有多少不同的面值组合?
最新推荐文章于 2023-05-02 17:27:00 发布
本文介绍了一个使用Java实现的组合求和问题解决方案。通过深度优先搜索(DFS)算法遍历所有可能的组合,并利用HashSet记录下所有不同的组合总和。代码展示了如何初始化问题参数、递归地探索组合以及返回不同组合数量。
1807

被折叠的 条评论
为什么被折叠?



