HDU2147之打表找规则
来源:互联网 发布:淘宝退款卖家拒绝几次 编辑:程序博客网 时间:2024/05/01 05:22
题目传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=2147
P点:就是P个石子的时候,对方拿可以赢(自己输的)
N点:就是N个石子的时候,自己拿可以赢
现在关于P,N的求解有三个规则
(1):最终态都是P
(2):按照游戏规则,到达当前态的前态都是N的话,当前态是P
(3):按照游戏规则,到达当前态的前态至少有一个P的话,当前态是N
题意:
在一个m*n的棋盘内,从(1,m)点出发,每次可以进行的移动是:左移一,下移一,左下移一。然后kiki每次先走,判断kiki时候会赢(对方无路可走的时候)。
打表代码:
#include<iostream>using namespace std;bool map[2001][2001];//1 P 0 N;int main(){ int i,j,k; map[1][1]=1; for(i=2;i<=2000;i++) { if(map[i-1][1]) map[i][1]=0; else map[i][1]=1; for(j=2;j<i;j++) { if(!map[i][j-1]&&!map[i-1][j-1]&&!map[i-1][j]) map[i][j]=1; else map[i][j]=0; } if(map[1][i-1]) map[1][i]=0; else map[1][i]=1; for(j=2;j<i;j++) { if(!map[j-1][i]&&!map[j-1][i-1]&&!map[j][i-1]) map[j][i]=1; else map[j][i]=0; } if(!map[i][i-1]&&!map[i-1][i-1]&&!map[i-1][i]) map[i][i]=1; else map[i][i]=0; } int M,N; for(i=1;i<=10;i++){ for(j=1;j<=10;j++) printf("%c ",map[i][j]?'P':'N'); printf("\n"); } return 0;}
找出规律之后一切都很好说~
代码:
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int main (void){ int t; int flag; //cin>>t; int n,m; while(~scanf("%d %d",&n,&m)) { if(n==0&&m==0) break; flag=0; if(n%2&&m%2) { printf("What a pity!\n"); continue; } printf("Wonderful!\n"); } return 0;}
0 0
- HDU2147之打表找规则
- hdu2147
- HDU2147
- hdu2147
- hdu2147
- hdu2147
- hdu2147
- HDU2147
- hdu2147
- hdu2147巴什博论
- ACM-巴什博弈之kiki's game——hdu2147
- HDU2147 巴什博弈
- HDU2147-kiki's game
- hdu2147 kiki's game
- hdu2147 kiki's game
- hdu2147 kiki's game
- hdu2147巴什博弈
- hdu2147 kiki's game
- HDU 3415 Max Sum of Max-K-sub-sequence(长度不超过k的最大连续子序列和,单调队列)
- 虚拟机类加载机制
- TCP/IP TIME_WAIT状态原理
- Android的软件盘在在点击“enter键”后有事件响应
- Codeforces 348A:Mafia(二分+思维)
- HDU2147之打表找规则
- MySQL结构优化技术之:掌控数据的结构
- 104. Maximum Depth of Binary Tree
- 关于WordPress的一些学习方法
- Notes: Java的方法重载机制和良好的编程习惯
- 为什么hash作为内存使用的经典数据结构?
- WordPress菜单导航功能设置教程
- 枚举的示例
- JavaScript 总结onchange、onpropertychange、oninput事件的用法和区别