HDU 2147 —— kiki's game
2016-05-18 21:37
232 查看
kiki's game
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others)
[align=left]Problem Description[/align]
Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the chesserboard is n*m.First of all, a coin is placed in the top right corner(1,m). Each time one
people can move the coin into the left, the underneath or the left-underneath blank space.The person who can't make a move will lose the game. kiki plays it with ZZ.The game always starts with kiki. If both play perfectly, who will win the game?
[align=left]Input[/align]
Input contains multiple test cases. Each line contains two integer n, m (0<n,m<=2000). The input is terminated when n=0 and m=0.
[align=left]Output[/align]
If kiki wins the game printf "Wonderful!", else "What a pity!".
[align=left]Sample Input[/align]
5 3
5 4
6 6
0 0
[align=left]Sample Output[/align]
What a pity!
Wonderful!
Wonderful!
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others)
[align=left]Problem Description[/align]
Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the chesserboard is n*m.First of all, a coin is placed in the top right corner(1,m). Each time one
people can move the coin into the left, the underneath or the left-underneath blank space.The person who can't make a move will lose the game. kiki plays it with ZZ.The game always starts with kiki. If both play perfectly, who will win the game?
[align=left]Input[/align]
Input contains multiple test cases. Each line contains two integer n, m (0<n,m<=2000). The input is terminated when n=0 and m=0.
[align=left]Output[/align]
If kiki wins the game printf "Wonderful!", else "What a pity!".
[align=left]Sample Input[/align]
5 3
5 4
6 6
0 0
[align=left]Sample Output[/align]
What a pity!
Wonderful!
Wonderful!
#include <cstdio> #include <iostream> using namespace std; const int MAXN = 2000 + 5; bool dp[MAXN][MAXN]; void Init() { for(int i=0; i<MAXN; i++) dp[0][i] = dp[i][0] = 1; for(int i=1; i<MAXN; i++) { for(int j=1; j<MAXN; j++) { dp[i][j] = !(dp[i-1][j] && dp[i-1][j-1] && dp[i][j-1]); } } } int main () { Init();int n, m; while(~scanf("%d%d", &n, &m) && (m|n)) { printf("%s\n", dp [m]?"Wonderful!":"What a pity!"); } return 0; }
相关文章推荐
- HDU 1846 —— Brave Game
- Sicily - Water 【寻找规律】
- C++对C扩展之默认参数(default)
- HDU 2746 ——Max Sum Plus Plus Plus 【dfs+带备忘 或 DP】
- Android 开发实战经验总结
- tyvj 1305 —— 长度不超过m的最大连续和 【前缀和+单调队列】
- NYOJ 742 —— 最大m段和 【区间DP】
- NYOJ 1103 —— m划分为n个正整数的个数
- 卡特兰数
- NYOJ 651 —— n划分为2个以上不同正整数的划分个数
- Java集合类的继承关系
- TestNG参数化测试之Excel读取数据
- CSS中的字体背景和盒子模型
- 并查集详解
- NYOJ 571 —— 各种划分数
- NYOJ 90 —— 求正整数n划分为若干个正整数的划分个数
- NYOJ 746 - 正整数n划分为m段,求m段的最大乘积 【区间DP】
- NYOJ 176 、POJ 1664 —— m划分为n个正整数的划分个数
- NYOJ 1077 【博弈+大整数取模】
- 通过指针运算符访问对象成员和构造函数的特点