等和的分隔子集 DP

2022-03-05 11:03:43 字數 630 閱讀 4950

曉萌希望將1到n的連續整數組成的集合劃分成兩個子集合,且保證每個集合的數字和是相等。例如,對於n=3,對應的集合能被劃分成 和 兩個子集合.

這兩個子集合中元素分別的和是相等的。

對於n=3,我們只有一種劃分方法,而對於n=7時,我們將有4種劃分的方案。

輸入包括一行,僅乙個整數,表示n的值(1≤n≤39)。

輸出包括一行,僅乙個整數,曉萌可以劃分對應n的集合的方案的個數。當沒發劃分時,輸出0。

樣例輸入

7

樣例輸出

4

ac**

#includeusing

namespace

std;

long

long dp[50][5000

];int

main()

int ss = s / 2

; dp[

0][0] = 1

;

for(int i = 1; i <= ss; i++)

for(int i = 1; i <= n; i++)}}

cout

<< dp[n][ss]/2

}

解析

dfs或者dp 等和的分隔子集

這道題我首先的思路是dfs,確實可以做,但是n上了30之後就執行超時了。說明dfs還是蠻容易超時的,適合小資料。include includeusing namespace std long long allsum 0 int cnt 0 int n void dfs int i,long long...

動態規劃 等和的分隔子集

題目 曉萌希望將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...