(博弈 sg入门)kiki's game -- hdu -- 2147
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2147
题意:
在一个n*m的棋盘上,从 (1,m),即右上角开始向左下角走。
下棋者只能往左边(left),左下面(left-underneath),下面(underneath),这三个方格下棋。
最后不能移动的人算输
思路: 
手动可以画出必胜态以及必败态的图 
可以很容易 找出规律
(1) 所有终结点是必败点(P点);
(2)从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点);
(3)无论如何操作,从必败点(P点)都只能进入必胜点(N点).
由此可知 10*10之内的为 (完全可以手写出来)
NNNNNNNNNN 
PNPNPNPNPN 
NNNNNNNNNN 
PNPNPNPNPN 
NNNNNNNNNN 
PNPNPNPNPN 
NNNNNNNNNN 
PNPNPNPNPN 
NNNNNNNNNN 
PNPNPNPNPN
可以看出 NN
PN 这样的规律 之后很容易知道怎么做了
代码:
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d%d",&n,&m))
{
if(n==&&m==)break;
if(n%==&&m%==)printf("What a pity!\n");
else printf("Wonderful!\n");
}
return ;
}
还可以用SG函数打表找出我们所要的结果NP 图
#include<stdio.h>
#include<string.h>
const int sz=;
int SG[sz][sz];
int dir[][]={-,,,,-,};
int n,m;
void get_sg()
{
int i,j;
memset(SG,,sizeof(SG));
for(i=n;i>=;i--)
for(j=;j<=m;j++)
{
if(!SG[i][j])
for(int k=;k<;k++)
{
int xx=i+dir[k][];
int yy=j+dir[k][];
if(xx>=&&xx<=n&&yy>=&&yy<=m)
{
SG[xx][yy]=;
}
}
}
}
int main()
{
int i,j; while(scanf("%d %d",&n,&m)!=EOF)
{
get_sg();
for(i=;i<=n;i++)
{
for(j=;j<=m;j++) if(SG[i][j]==) printf("N"); else printf("P");
printf("\n");
}
if(SG[][m]==)
{
printf("Wonderful!\n");
}
else printf("What a pity!\n");
}
return ;
}
(博弈 sg入门)kiki's game -- hdu -- 2147的更多相关文章
- (博弈  sg入门2)
		接下来介绍Nim游戏(同样引用杭电上的,懒的打字) 1.有两个玩家: 2. 有三堆扑克牌(比如:可以分别是 5,7,9张): 3. 游戏双方轮流操作: 4. 玩家的每次操作是选择其中某 ... 
- kiki's game HDU - 2147(找规律)
		#include"stdio.h" int main( ) { int n,m; ||m!=)) { ==||m%==) printf("Wonderful!\n&quo ... 
- hdu 2147 kiki's game(巴什博弈)
		kiki's game HDU - 2147 题意:一个n*m的表格,起始位置为右上角,目标位置为左下角,甲先开始走,走的规则是可以向左,向下或者向左下(对顶的)走一格.谁先走到目标位置谁就胜利.在甲 ... 
- hdu 2147 kiki's game, 入门基础博弈
		博弈的一些概念: 必败点(P点) : 前一个选手(Previous player)将取胜的位置称为必败点. 必胜点(N点) : 下一个选手(Next player)将取胜的位置称为必胜点. 必败(必胜 ... 
- HDU.2147 kiki's game (博弈论 PN分析)
		HDU.2147 kiki's game (博弈论 PN分析) 题意分析 简单的PN分析 博弈论快速入门 代码总览 #include <bits/stdc++.h> using names ... 
- S-Nim HDU 1536 博弈 sg函数
		S-Nim HDU 1536 博弈 sg函数 题意 首先输入K,表示一个集合的大小,之后输入集合,表示对于这对石子只能去这个集合中的元素的个数,之后输入 一个m表示接下来对于这个集合要进行m次询问,之 ... 
- HDU 2147 kiki's game(博弈经典题)
		题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2147 Problem Description Recently kiki has nothing to ... 
- HDU 2147 kiki's game(规律,博弈)
		kiki's game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others)Total ... 
- (巴什博弈  sg函数入门1) Brave Game -- hdu --  1846
		链接: http://acm.hdu.edu.cn/showproblem.php?pid=1846 首先来玩个游戏,引用杭电课件上的: (1) 玩家:2人:(2) 道具:23张扑克牌:(3) 规则: ... 
随机推荐
- PhpStorm 10.0.3 下载安装与汉化
			https://www.7down.com/soft/229568.html 2JA97R55MG-eyJsaWNlbnNlSWQiOiIySkE5N1I1NU1HIiwibGljZW5zZWVOYW ... 
- web常用测试点记录
			输入框 1.字符型输入框: 单行文本输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”,特别要注意单引号和&符号.如果禁止直接输入特殊字符时,使用 ... 
- C#中XML文档注释编译DLL引用到其它项目
			引用地址:http://zhidao.baidu.com/link?url=jSGYEBysE4gBExtNsHCVk3vd2OK2cMlaf02cS79GdRuGueTBdFJB0btOdBYkg_ ... 
- lodop打印控件需要开启的几个计算机服务
			首先要开启: 其次: 
- VBA7种文档遍历法
			Sub 在选定文档最后加入一句话() '遍历文件 Dim MyDialog As FileDialog On Error Resume Next Application.ScreenUpdating ... 
- PAT 甲级 1009 Product of Polynomials (25)(25 分)(坑比较多,a可能很大,a也有可能是负数,回头再看看)
			1009 Product of Polynomials (25)(25 分) This time, you are supposed to find A*B where A and B are two ... 
- IPv6 Tunnel Broker+ROS搭建6TO4(IPV6)网络
			准备条件:1.公网IPV4的IP2.ROS+IPV6的DHCP,本测试在ROS6.24版本下测试通过3. IPv6 Tunnel Broker:https://www.tunnelbroker.net ... 
- RPC框架之Thrift分析(转)
			一.简介 1.Thrift是Facebook开发的跨语言的RPC服务框架.随后贡献给Apache开源组织.成为RPC服务的主流框架. 2.特点: 优点: 跨语言,支持java.c/c ... 
- EF 汇总函数使用注意事项Max()/Min()等
			一.字符串类型最大值 1.字符串类型的最大值,和数据库的字典排序最后一个相同,如果存在返回null //字符串最大值,是字典排序最后一个 string max1 = _context.students ... 
- Java下LDAP操作的资料
			话说LDAP真是个诡异的protocol(或者数据库,或者服务,whatever...),没有一个特别形象的spec.这里列出一些筛选出的还可以的文档,都是oracle的: https://docs. ... 
