子集和問題

2021-09-19 09:30:39 字數 1157 閱讀 7956

problem description

子集和問題的乙個例項為〈s,t〉。其中,s=是乙個正整數的集合,c是乙個正整數。子集和問題判定是否存在s的乙個子集s1,使得:

。試設計乙個解子集和問題的回溯法。

對於給定的正整數的集合s=和正整數c,計算s 的乙個子集s1,使得:

。input

輸入資料的第1 行有2 個正整數n 和c(n≤10000,c≤10000000),n 表示s 的大小,c是子集和的目標值。接下來的1 行中,有n個正整數,表示集合s中的元素。

output

將子集和問題的解輸出。當問題無解時,輸出「no solution!」。

sample input

5 10

2 2 6 5 4

sample output

2 2 6

此題後台測試資料太少… 有問題有問題有問題

#include using namespace std;

int a[10010];

int n, c;

bool v[10010];

bool trace()

else if(sum > c)

p++;

}if(p >= n)

while(!v[p-1])

sum -= a[p-1];

v[p-1] = false;}}

return false;

}int main()

if(trace())

coutint n, c;

int data[10000];

bool v[10000];

bool traceback(int n)

else if(c < sum)

p++;

}if(p >= n)

while(!v[p-1])

sum -= data[p-1];

v[p-1] = false;}}

return false;

}int main()

if(traceback(n))

else

cout<}

}cout<}

else

return 0;

}

子集和問題

題目描述 子集和問題的乙個例項為 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,並列出表示式 並且要求表示式不相同。若表示式中的元素相同則表示式就相同,...