UVa1589 象棋
就是声明两个数组,一个模拟棋局,另一个模拟黑将不能走的位置。不过写得有点长了...
#include<iostream>
#include<string>
using namespace std;
struct Node
{
];
int x, y;
}a[];
][]; //模拟棋盘棋子的情况
][]; //模拟黑棋不能走的情况
int bh, bs; //黑色棋子的坐标
void G(int x, int y) //模拟帅棋子
{
;
; i < x; i++)
{
if (vis[i][y])
{
flag = ;
break;
}
}
)
{
cnt[][y] = ;
cnt[][y] = ;
cnt[][y] = ;
}
}
void R(int x, int y) //模拟车棋子
{
;
&& y < )
{
; i < ; i++)
{
if (vis[x][i])
{
flag = ;
break;
}
}
}
&& y>)
{
; i < y; i++)
{
if (vis[x][i])
{
flag = ;
break;
}
}
}
&& y <= )
{
; i < y; i++)
{
if (vis[i][y])
{
flag = ;
break;
}
}
}
)
{
)
{
cnt[x][] = ;
cnt[x][] = ;
cnt[x][] = ;
}
)
{
cnt[][y] = ;
cnt[][y] = ;
cnt[][y] = ;
}
}
}
void C(int x, int y) //模拟炮棋子
{
;
&& y < )
{
; i < ; i++)
{
if (vis[x][i])
{
cnt[x][] = ;
cnt[x][] = ;
cnt[x][] = ;
break;
}
}
}
&& y > )
{
; i < y; i++)
{
if (vis[x][i])
{
cnt[x][] = ;
cnt[x][] = ;
cnt[x][] = ;
}
}
}
&& y >= && y <= )
{
; i < x; i++)
{
if (vis[i][y])
{
cnt[][y] = ;
cnt[][y] = ;
cnt[][y] = ;
}
}
}
}
void H(int x, int y) //模拟马棋子
{
> )
{
][y])
{
> )
{
cnt[x - ][y - ] = ;
}
< )
{
cnt[x + ][y + ] = ;
}
}
}
< )
{
][y])
{
> )
{
cnt[x + ][y - ] = ;
}
< )
{
cnt[x + ][y + ] = ;
}
}
}
> )
{
])
{
> )
{
cnt[x - ][y - ] = ;
}
< )
{
cnt[x + ][y - ] = ;
}
}
}
< )
{
])
{
> )
{
cnt[x - ][y + ] = ;
}
< )
{
cnt[x + ][y + ] = ;
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n; //红色棋子的个数
while (cin >> n >> bh >> bs && n)
{
memset(vis, , sizeof(vis));
memset(cnt, , sizeof(cnt));
; i < n; i++)
{
cin >> a[i].ch >> a[i].x >> a[i].y;
vis[a[i].x][a[i].y] = ;
}
; i < n; i++)
{
] == 'G') G(a[i].x, a[i].y);
] == 'R') R(a[i].x, a[i].y);
] == 'C') C(a[i].x, a[i].y);
] == 'H') H(a[i].x, a[i].y);
}
;
>)
{
][bs])
flag = ;
}
< )
{
][bs])
flag = ;
}
> )
{
])
flag = ;
}
< )
{
])
flag = ;
}
)
cout << "NO" << endl;
else
cout << "YES" << endl;
cout << endl;
}
;
}
UVa1589 象棋的更多相关文章
- UVA-1589 象棋(模拟)
题目:(传送门) 给出一个象棋的残局,下一步是黑棋走,判断黑棋是不是被将死. 思路: 读完这个题,知道是一个模拟题,然后想到用两个二维数组来模拟棋盘,一个(mp数组)用来存残局,一个(res数组)用来 ...
- [算法竞赛入门经典] 象棋 ACM/ICPC Fuzhou 2011, UVa1589 较详细注释
Description: Xiangqi is one of the most popular two-player board games in China. The game represents ...
- 算法习题---4-1象棋(UVa1589)
一:题目 在黑方只有一个“将”的情况下,红方只有(车.马.炮)(可以多个).帅的情况下,判断黑方是否被将死 (一)题目详解 其中棋盘按照坐标方式表示,左上角为(,),列数最大9,行数最大10 G 表示 ...
- HTML5学习总结——canvas绘制象棋(canvas绘图)
一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...
- 局域网象棋游戏(C++实现,使用Socket,界面使用Win32,CodeBlocks+GCC编译)
目录 成果 运行效果图 过程 1. 首先的问题是下棋的两端应该是什么样的? 2. 接下来的问题是怎么表示,怎么存储? 3. 然后应该怎么通信呢? 代码 main.cpp chinese_chess.h ...
- 简单的c#winform象棋游戏(附带源码)
算法源自网络(网络源码连接:http://www.mycodes.net/161/6659.htm) 整体思路:用二维数组构建棋盘每一个数组元素封装为一个picturebox附带若干属性(例如:棋 ...
- BZOJ 1801中国象棋 DP
1801: [Ahoi2009]chess 中国象棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1426 Solved: 826[Submit][ ...
- C#中国象棋+游戏大厅 服务器 + 客户端源码
来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设 ...
- 中国象棋引擎的C#源代码
以前写的中国象棋引擎的C#源程序,可在VS2010中编译运行,由于个人精力有限,难以完成后续的开发工作,如果谁感兴趣,请关注微信公众号(“申龙斌的程序人生”,ID:slbGTD),发送后台消息“象棋引 ...
随机推荐
- C++-理解构造函数、析构函数执行顺序
先初始化序列中的函数调用,如果基类构造函数为非引用传递,则引起参数的拷贝构造 再: 先类内的成员构造函数(拷贝/默认),再类的构造函数:先基类,再派生类: 本文主要说明对象创建时构造函数的执行顺序,对 ...
- 在同一个页面中加载多个不同的jQuery版本
<!-- 从谷歌服务器加载jQuery最新版本--> <script type="text/javascript" src="http://ajax.g ...
- hashmap and hashtable
①继承不同. public class Hashtable extends Dictionary implements Map public class HashMap extends Abstrac ...
- Android之View.onMeasure方法
View在屏幕上显示出来要先经过measure(计算)和layout(布局). 1.什么时候调用onMeasure方法? 当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想要用多大地 ...
- php的字符串处理
字符串处理: strlen("aaa");取字符串的长度 *** strcmp("aaa","aaa");比较两个字符串,相同的话输出0,不 ...
- 《JAVA学习笔记(1---13-4)》
[1]问题: 1.什么叫做面向过程? 2.什么叫做面向对象? 解答: 1: 所谓的面向过程就是我们是一个执行者,我们要开发一个项目,这个项目要求要实现很多功能,作为执行者的我们就需要 去一个一个的找这 ...
- DirectX 总结和DirectX 9.0 学习笔记
转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...
- Ubuntu 14.10 下安装Synergy,不同电脑之间公用一套键盘鼠标
因为工作时候有多台电脑放在一起,如果每个用一套键盘鼠标很是不方便,所以希望能够不用电脑之间公用一套键盘鼠标. Synergy可以实现不同电脑之间公用一套键盘鼠标,并且支持简单的复制粘贴.很好用. 它还 ...
- hdu - 2083 - 简易版之最短距离
找到中位数 , 根据对称性 , 当中位数需要两个数取中值的时候不需要取 , 只需要其中的任意一个数几个 例如四个数 1 , 2 , 3 , 4 . 这四个数 , 其中的 2 和 3 都可以 . 然后求 ...
- POJ 2385 DP
题意:在苹果树下,初始在第一棵树下,告诉你在第几秒的时候,那棵树下会落下苹果,告诉最多能移动的次数,然后来回移动,求能得到的最大的苹果数目. 思路:三维DP,d[第i秒][已经移动j次][当前在(1, ...