POJ 1579 解题报告
2015-05-16 05:11
309 查看
简单题
thestoryofsnow | 1579 | Accepted | 184K | 0MS | C++ | 1247B |
/* ID: thestor1 LANG: C++ TASK: poj1579 */ #include <iostream> #include <fstream> #include <cmath> #include <cstdio> #include <cstring> #include <limits> #include <string> #include <vector> #include <list> #include <set> #include <map> #include <queue> #include <stack> #include <algorithm> #include <cassert> using namespace std; const int MAXN = 21; bool isSet[MAXN][MAXN][MAXN] = {{{false}}}; int cache[MAXN][MAXN][MAXN]; int recursion(int a, int b, int c) { if (a <= 0 || b <= 0 || c <= 0) { return 1; } if (a > 20 || b > 20 || c > 20) { return recursion(20, 20, 20); } if (isSet[a][b][c]) { return cache[a][b][c]; } int ret; if (a < b && b < c) { ret = recursion(a, b, c - 1) + recursion(a, b - 1, c - 1) - recursion(a, b - 1, c); } else { ret = recursion(a - 1, b, c) + recursion(a - 1, b - 1, c) + recursion(a - 1, b, c - 1) - recursion(a - 1, b - 1, c - 1); } cache[a][b][c] = ret; isSet[a][b][c] = true; return ret; } int main() { int a, b, c; while (scanf("%d%d%d", &a, &b, &c)) { if (a == -1 && b == -1 && c == -1) { break; } printf("w(%d, %d, %d) = %d\n", a, b, c, recursion(a, b, c)); } return 0; }
相关文章推荐
- poj解题报告——1579
- 解题报告——POJ 1579
- poj1579解题报告
- POj 1105解题报告
- POJ 3414 解题报告!
- poj 2965 解题报告
- POJ 3280 解题报告
- poj1003 Hangover 解题报告
- poj 1207 The 3n + 1 problem 解题报告
- poj解题报告——1061
- POJ-3274 Gold Balanced Lineup 解题报告
- POJ 2140 解题报告
- 2018.1.21【POJ - 2260】解题报告(模拟,图论引申)
- 解题报告 poj 3207
- POJ_1426 Find The Multiple解题报告
- POJ 1001 Exponentiation C++解题报告 JAVA解题报告
- POJ 1002题 解题报告
- poj 1107解题报告
- POJ1456解题报告
- POJ 1003(Hangover 简单数学) 解题报告