国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

usaco_Subset Sums_dp

2019-11-11 05:06:49
字體:
供稿:網(wǎng)友

題目描述

對于從1到N (1 <= N <= 39) 的連續(xù)整數(shù)集合,能劃分成兩個子集合,且保證每個集合的數(shù)字和是相等的。舉個例子,如果N=3,對于{1,2,3}能劃分成兩個子集合,每個子集合的所有數(shù)字和是相等的: {3} 和 {1,2} 這是唯一一種分法(交換集合位置被認(rèn)為是同一種劃分方案,因此不會增加劃分方案總數(shù)) 如果N=7,有四種方法能劃分集合{1,2,3,4,5,6,7},每一種分法的子集合各數(shù)字和是相等的: {1,6,7} 和 {2,3,4,5} {注 1+6+7=2+3+4+5} {2,5,7} 和 {1,3,4,6} {3,4,7} 和 {1,2,5,6} {1,2,4,7} 和 {3,5,6} 給出N,你的程序應(yīng)該輸出劃分方案總數(shù),如果不存在這樣的劃分方案,則輸出0。


思路

1.只有和為偶數(shù)時才有解 2.然后后面用dp f[i][j]表示前i個數(shù)和為j的個數(shù) f[i][j]=f[i-1][j]+f[i-1][j-i] 或=f[i-1][j] (加上的數(shù)大于總和) 最后輸出f[n][sum/2] O(n*sum)


/*ID:a1192631LANG:C++TASK:subset*/#include <stdio.h>int f[101][1001];int main(){ freopen("subset.in", "r", stdin); freopen("subset.out", "w", stdout); int n,s; scanf("%d",&n); s=n*(n+1)/2; if (s%2==1) {
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 马龙县| 天全县| 徐州市| 郧西县| 通渭县| 正定县| 平顶山市| 伊宁县| 辽阳市| 清丰县| 灵武市| 东乡族自治县| 祥云县| 墨江| 唐山市| 高淳县| 介休市| 苗栗县| 益阳市| 黄浦区| 博野县| 武宣县| 深水埗区| 文昌市| 马关县| 奉化市| 工布江达县| 福海县| 顺昌县| 盐边县| 扬州市| 吉安市| 敖汉旗| 彩票| 白银市| 延庆县| 朝阳市| 洞头县| 临邑县| 米易县| 剑阁县|