POJ-1014-Dividing
2013-10-06 18:19
260 查看
// Input: n1 n2 n3 n4 n5 n6\n // max_n = 20000 // Output: Collection #1: // Can't be divided. // Method: calc total sum, test get half #include <stdio.h> #include <string.h> #include <memory.h> #include <math.h> // STRUCTS // VARS int cntMarbles[6]; int sum; // FUNCS bool readLine() { sum = 0; bool ok = false; for (int i = 0; i < 6; ++i) { scanf("%d", cntMarbles + i); sum += (cntMarbles[i] * (i + 1)); if (cntMarbles[i]) ok = true; } return ok; } // test get value bool getValue(int val, int start) { if (val == 0) return true; for (int i = start; i >= 0; --i) { if (cntMarbles[i] > 0) { // judge before call if (val - i - 1 >= 0) { -- cntMarbles[i]; if (getValue(val - i - 1, i)) return true; // else not add it ??? but this can AC } } } return false; } // output result void outputRet(int i, bool canDivided) { printf("Collection #%d:\n", i); if (canDivided) printf("Can"); else printf("Can't"); printf(" be divided.\n\n"); } void solve(int count) { bool canDivided = false; if (sum % 2 == 0) canDivided = getValue(sum / 2, 5); outputRet(count, canDivided); } //#define LOCAL int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #endif int count = 0; while (readLine()) { solve(++ count); } return 0; }
相关文章推荐
- POJ 1014 Dividing(多重背包, 倍增优化)
- POJ_1014 Dividing解题报告
- POJ 1014 Dividing 解答
- POJ 1014 Dividing 解答
- ZOJ 1149 || POJ 1014 || HDU 1059 Dividing
- poj - 1014 - Dividing(多重背包)
- POJ 1014 Dividing
- HDOJ 1059 && POJ 1014 Dividing
- POJ1014 Dividing 母函数
- Poj 1014 Dividing//多重背包
- POJ 1014 Dividing(DFS、完全背包、母函数)
- POJ 1014 Dividing 多重背包
- hdu1059 &poj1014 Dividing (多重背包)
- poj 1014 Dividing
- POJ 1014 Dividing
- hdu 1059&&POJ 1014 Dividing
- POJ_1014_Dividing
- POJ1014 Dividing(DP)
- 【多重背包】poj 1014 Dividing
- HDU1059 && POJ1014 :Dividing(多重背包)