uva 562 Dividing coins 分钱 dp
2013-09-21 21:07
369 查看
题意:给你一些硬币,求出分成两堆,使得两堆的差最小,求出差。
用dp[]表示能否分到这么多钱,由于一种分法就是一堆空一堆总和,所以dp[0]一定为true,然后的思想就是如果dp[j - coin[i]]可以分到,那dp[j]肯定能分到。
代码:
用dp[]表示能否分到这么多钱,由于一种分法就是一堆空一堆总和,所以dp[0]一定为true,然后的思想就是如果dp[j - coin[i]]可以分到,那dp[j]肯定能分到。
代码:
/* * Author: illuz <iilluzen[at]gmail.com> * Blog: http://blog.csdn.net/hcbbt * File: 562.cpp * Create Date: 2013-09-21 20:24:49 * Descripton: dp */ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 101000; int a[MAXN]; bool dp[MAXN]; int main() { int t, n, sum; scanf("%d", &t); while (t--) { memset(dp, 0, sizeof(dp)); sum = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); sum += a[i]; } dp[0] = 1; for (int i = 0; i < n; i++) for (int j = sum; j >= a[i]; j--) if (dp[j - a[i]]) dp[j] = 1; for (int i = sum / 2; i >= 0; i++) if (dp[i]) { printf("%d\n", abs(sum - 2 * i)); break; } } return 0; }
相关文章推荐
- Uva 562-Dividing coins(DP)
- UVA 562 Dividing coins(DP:01背包)
- 【解题报告】uva562_Dividing coins(划分硬币, dp, 01背包)
- UVA.562 Dividing coins (DP 01背包)
- UVA 562 Dividing coins(01dp)
- Dividing coins - UVa 562 dp背包
- UVa 562 Dividing coins(简单DP)
- Uva 562— Dividing coins
- uva 562 dividing coins
- UVA 562 Dividing coins(dp + 01背包)
- uva 562 - Dividing coins(01背包)
- Uva 562 Dividing coins(01背包问题)
- uva 562 Dividing coins(01背包)
- uva562 - Dividing coins(01背包)
- UVA 562 Dividing coins 分硬币(01背包,简单变形)
- Uva 562 背包DP
- Uva 562 Dividing coins
- UVA 562 (用硬币拼数额 DP 14.3.11)
- uva562 - Dividing coins(简单动规)
- UVA 562 Dividing coins(dp + 01背包)