USACO 2.2 Subset Sums

TASK: subset
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 3148 KB]
   Test 2: TEST OK [0.000 secs, 3148 KB]
   Test 3: TEST OK [0.000 secs, 3148 KB]
   Test 4: TEST OK [0.000 secs, 3148 KB]
   Test 5: TEST OK [0.000 secs, 3148 KB]
   Test 6: TEST OK [0.000 secs, 3148 KB]
   Test 7: TEST OK [0.000 secs, 3148 KB]

All tests OK.
 
  
1 /*
2 PROG: subset
3 ID: jiafeim1
4 LANG: C++
5 */
6
7
8 #include < iostream >
9 #include < fstream >
10
11 using namespace std;
12
13 int n;
14 int total = 0 ;
15 int now_res = 0 ;
16 int upper;
17 unsigned long res[ 42 ][ 800 ] = { 0 };
18
19 int main()
20 {
21 std::ifstream fin( " subset.in " );
22 std::ofstream fout( " subset.out " );
23
24 fin >> n;
25 upper = (n + 1 ) * n / 2 ;
26
27 res[ 0 ][ 0 ] = 1 ;
28 if (upper % 2 == 0 )
29 {
30 upper /= 2 ;
31 for ( int i = 1 ;i <= n; ++ i)
32 for ( int sum = upper;sum >= 0 ; -- sum)
33 {
34 if (sum >= i && res[i - 1 ][sum - i] != 0 )
35 res[i][sum] = res[i - 1 ][sum - i];
36 if (res[i - 1 ][sum] != 0 )
37 res[i][sum] += res[i - 1 ][sum];
38 }
39 fout << res[n][upper] / 2 << endl;
40 }
41 else
42 {
43 fout << 0 << endl;
44 }
45 fin.close();
46 fout.close();
47
48 }

转载于:https://www.cnblogs.com/huanyan/archive/2011/05/04/USACO_Subset_Sums.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值