Solution 21 子集和問題

2022-08-02 00:27:14 字數 690 閱讀 9041

問題描述

輸入兩個整數n和m,從數列1,2,3,...,n中隨意取出幾個數。

使其和等於m,把所有符合的組合列出來。

解決思路

dfs,注意:

1. 乙個元素只能使用一次;

2. 保證輸出的集合不重複。

程式

public class subsetsum 

int nums = new int[n];

for (int i = 0; i < nums.length; i++)

listsol = new arraylist();

helper(res, sol, nums, m, 0);

return res;

} private void helper(list> res, listsol, int nums, int m, int start)

if (m == 0)

for (int i = start; i < nums.length; i++)

sol.add(nums[i]);

helper(res, sol, nums, m - nums[i], i + 1);

sol.remove(sol.size() - 1);

} }}

子集和問題

題目描述 子集和問題的乙個例項為 s,t 其中,s 是乙個正整數的集合,c是乙個正整數。子集和問題判定是否存在s的乙個子集s1,使得s1中的各元素之和等於c。題目出自 計算機演算法設計與分析 第3版 王曉東 思路 用回溯法解這道題,我本來想修改排列樹使之可以求出乙個集合的所有子集。但是分析了一下,時...

子集和問題

問題描述 子集和問題的乙個實力為。其中,s 是乙個正整數的集合,c是乙個正整數。判定是否存在s的乙個子集s1使得s1的和為c。輸入 輸入含多組測試用例!對每組測試用例,第一行有兩個正整數n和c,n表示s的大小,c是子集和的目標值。接下來的一行,有n個正整數 1 n 10000 表示集合s中的元素。當...

子集和問題

今天程式考試受挫,遂打算寒假空閒時間刷刷題,練練手感。今天有一題是這樣的,檔案 data.txt 有n 1行,每一行都為乙個正整數,第一行為n,剩餘n行為任意n個正整數。對於正整數m m 2 輸出m個數的和,要求和不大於100,並列出表示式 並且要求表示式不相同。若表示式中的元素相同則表示式就相同,...