問題:
給定n個正整數wi和乙個正整數m,在這n個正整數中找出乙個子集,使得子集中的正整數之和等於m。
解的形式:
設定乙個n元組(x0,x1,...xn-1),如果wi包含在這個子集中,xi就等於1,反之等於0.
boundfunction:
演算法偽**:
/**
* */
package com.iteye.caoruntao.sumofsub;
/** * @author caoruntao
* */
public class sumofsub
public void computesumofsub(int s, int k, int r)
else if(s+w[k]+w[k+1] <= m)
if(s+r-w[k]>=m && s+w[k+1]<= m) }
public void printresult(int k)
} }/**
* @param args
*/public static void main(string args) ;
sumofsub sumofsub = new sumofsub(w,31,4);
int r = 0;
for(int i=0; i<4; i++)
sumofsub.computesumofsub(0, 0, r);
}}
回溯法 子集和問題(兩種)
描述 s 是乙個正整數的集合,c是乙個正整數。計算s的乙個子集s1,使得子集s1的所有元素之和等於c。利用回溯法解決該問題。依次輸入 s的大小,整數c,集合s中的元素輸出 子集s1.如果無解,輸出 no solution include using namespace std int s 100 集...
回溯演算法 子集II
思路 該題為子集問題,與之前 組合總和問題ii 的去重思想一致,即相同一層不能有相同的元素,因此去重邏輯 if i startidex nums i nums i 1 不變,注意要先排序,將相同元素放在一起 class solution void backtrack vector int nums,...
演算法 子集和問題
子集和問題就是 給出乙個陣列arr和乙個值sum 輸出滿足和為sum的arr的子集 子集和問題 從某種程度上來說 其實就是 01揹包問題的 子問題 還是取一種情況 不取是另外一種情況 然後 用回溯法 構建出一棵樹來遍歷一下 include include using namespace std co...