子集和,動態規劃

2021-09-21 07:12:55 字數 722 閱讀 6667

題目內容:

對於由從1到n(1<=n<=39)這n個連續的整數組成的集合來說,我們有時可以將集合分成兩個部分和相同的子集合。

例如,n=3時,可以將集合分為和。此時稱有一種方式(即與順序無關)。

n=7時,共有四種方式可以將集合分為兩個部分和相同的子集合:和和

和和輸入描述

程式從標準輸入讀入資料,只有一組測試用例。如上所述的n。

輸出描述

方式數。若不存在這樣的拆分,則輸出0。

輸入樣例

輸出樣例

4一開始沒想到用dp做, 試了回溯, 然而會算到重複的結果上去, 而且複雜度也太大了, 剪枝也不夠, 用dp很好解決, 附一維陣列優化

#include#include#includeusing namespace std;

int f[50];

int ans, n;

long long d[50][800];

int main()

} cout << d[n][ans] / 2; }

}

#include#include#includeusing namespace std;

long long d[800];

int n, ans;

int main()

cout << d[ans] / 2; }

}

分割等和子集 動態規劃

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過100 陣列的大小不會超過200 示例 1 輸入 1,5,11,5 輸出 true 解釋 陣列可以分割成 1,5,5 和 11 示例 2 輸入 1,2,3,5 輸出 false ...

動態規劃 等和的分隔子集

題目 曉萌希望將1到n的連續整數組成的集合劃分成兩個子集合,且保證每個集合的數字和是相等。例如,對於n 3,對應的集合能被劃分成 和 兩個子集合.這兩個子集合中元素分別的和是相等的。對於n 3,我們只有一種劃分方法,而對於n 7時,我們將有4種劃分的方案。輸入包括一行,僅乙個整數,表示n的值 1 n...

動態規劃 等和的分隔子集

曉萌希望將1到n的連續整數組成的集合劃分成兩個子集合,且保證每個集合的數字和是相等。例如,對於n 3,對應的集合能被劃分成 和 兩個子集合.這兩個子集合中元素分別的和是相等的。對於n 3,我們只有一種劃分方法,而對於n 7時,我們將有4種劃分的方案。輸入包括一行,僅乙個整數,表示n的值 1 n 39...