HDU 4121 Xiangqi
模拟吧,算是。。。
被这个题wa到哭,真是什么都不想说了。。。上代码
#include <iostream>
#include <cstring>
using namespace std; struct node {
int x,y;
char c;
}q[]; int main (){
int n,x,y;
int kase=;
int map[][];
while (cin>>n>>x>>y){
if (n+x+y==)
break ;
memset (map,,sizeof map);
for (int i=;i<n;i++){
cin>>q[i].c>>q[i].x>>q[i].y;
map[q[i].x][q[i].y]=;
}
int flag=;
for (int i=;i<n;i++){
if (q[i].c=='G'){
for (int j=q[i].x-;j>;j--){
if (map[j][q[i].y]==||map[j][q[i].y]==){
map[j][q[i].y]=;
break ;
}
if (j==x&&q[i].y==y){
flag=;
break ;
}
map[j][q[i].y]=;
}
}
else if (q[i].c=='R'){
for (int j=q[i].x-;j>;j--){
if (map[j][q[i].y]==||map[j][q[i].y]==){
map[j][q[i].y]=;
break ;
}
map[j][q[i].y]=;
}
for (int j=q[i].x+;j<;j++){
if (map[j][q[i].y]==||map[j][q[i].y]==){
map[j][q[i].y]=;
break ;
}
map[j][q[i].y]=;
}
for (int j=q[i].y-;j>;j--){
if (map[q[i].x][j]==||map[q[i].x][j]==){
map[q[i].x][j]=;
break ;
}
map[q[i].x][j]=;
}
for (int j=q[i].y+;j<;j++){
if (map[q[i].x][j]==||map[q[i].x][j]==){
map[q[i].x][j]=;
break ;
}
map[q[i].x][j]=;
}
}
else if (q[i].c=='H'){
if (map[q[i].x+][q[i].y]!=&&map[q[i].x+][q[i].y]!=){
map[q[i].x+][q[i].y+]=map[q[i].x+][q[i].y+]==||map[q[i].x+][q[i].y+]==?:;
map[q[i].x+][q[i].y-]=map[q[i].x+][q[i].y-]==||map[q[i].x+][q[i].y-]==?:;
}
if (q[i].x>&&map[q[i].x-][q[i].y]!=&&map[q[i].x-][q[i].y]!=){
map[q[i].x-][q[i].y+]=map[q[i].x-][q[i].y+]==||map[q[i].x-][q[i].y+]==?:;
map[q[i].x-][q[i].y-]=map[q[i].x-][q[i].y-]==||map[q[i].x-][q[i].y-]==?:;
}
if (map[q[i].x][q[i].y+]!=&&map[q[i].x][q[i].y+]!=){
map[q[i].x+][q[i].y+]=map[q[i].x+][q[i].y+]==||map[q[i].x+][q[i].y+]==?:;
map[q[i].x-][q[i].y+]=map[q[i].x-][q[i].y+]==||map[q[i].x-][q[i].y+]==?:;
}
if (q[i].y>&&map[q[i].x][q[i].y-]!=&&map[q[i].x][q[i].y-]!=){
map[q[i].x+][q[i].y-]=map[q[i].x+][q[i].y-]==||map[q[i].x+][q[i].y-]==?:;
map[q[i].x-][q[i].y-]=map[q[i].x-][q[i].y-]==||map[q[i].x-][q[i].y-]==?:;
}
}
else {
int temp=;
for (int j=q[i].x+;j<;j++){
if (temp==&&map[j][q[i].y]==)
map[j][q[i].y]=;
if (map[j][q[i].y]==||map[j][q[i].y]==)
temp++;
if (temp==){
map[j][q[i].y]=;
break ;
}
}
temp=;
for (int j=q[i].x-;j>;j--){
if (temp==&&map[j][q[i].y]==)
map[j][q[i].y]=;
if (map[j][q[i].y]==||map[j][q[i].y]==)
temp++;
if (temp==){
map[j][q[i].y]=;
break ;
}
}
temp=;
for (int j=q[i].y-;j>;j--){
if (temp==&&map[q[i].x][j]==)
map[q[i].x][j]=;
if (map[q[i].x][j]==||map[q[i].x][j]==)
temp++;
if (temp==){
map[q[i].x][j]=;
break ;
}
}
temp=;
for (int j=q[i].y+;j<;j++){
if (temp==&&map[q[i].x][j]==)
map[q[i].x][j]=;
if (map[q[i].x][j]==||map[q[i].x][j]==)
temp++;
if (temp==){
map[q[i].x][j]=;
break ;
}
}
}
}
if (map[x][y]==||map[x][y]==)
flag=;
if (x<)
if (map[x+][y]==||map[x+][y]==)
flag=;
if (y<)
if (map[x][y+]==||map[x][y+]==)
flag=;
if (x>)
if (map[x-][y]==||map[x-][y]==)
flag=;
if (y>)
if (map[x][y-]==||map[x][y-]==)
flag=; //for (int i=1;i<=10;i++){
// for (int j=1;j<=10;j++)
// cout<<map[i][j];
// cout<<endl;
//} //if (kase++)
// cout<<endl;
if (flag)
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}
HDU 4121 Xiangqi的更多相关文章
- HDU 4121 Xiangqi 模拟题
Xiangqi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4121 ...
- HDU 4121 Xiangqi (算是模拟吧)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4121 题意:中国象棋对决,黑棋只有一个将,红棋有一个帅和不定个车 马 炮冰给定位置,这时当黑棋走,问你黑 ...
- HDU 4121 Xiangqi 我老了?
Xiangqi Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU 4121 Xiangqi --模拟
题意: 给一个象棋局势,问黑棋是否死棋了,黑棋只有一个将,红棋可能有2~7个棋,分别可能是车,马,炮以及帅. 解法: 开始写法是对每个棋子,都处理处他能吃的地方,赋为-1,然后判断将能不能走到非-1的 ...
- HDU 4121
http://www.bnuoj.com/v3/problem_show.php?pid=10277 //#pragma comment(linker, "/STACK:16777216&q ...
- HDU 4461:The Power of Xiangqi(水题)
http://acm.hdu.edu.cn/showproblem.php?pid=4461 题意:每个棋子有一个权值,给出红方的棋子情况,黑方的棋子情况,问谁能赢. 思路:注意“ if a play ...
- HDU 4461 The Power of Xiangqi (水题)
题意:给定一些字母,每个字母都代表一值,如果字母中没有B,或者C,那么就在总值大于1的条件下删除1,然后比较大小. 析:没什么好说的,加起来比较就好了. 代码如下: #pragma comment(l ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
随机推荐
- 转:Linux中find命令-path -prune用法详解
在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下 ...
- [statsvn]-svn代码量统计
用statasvn进行代码量统计的时候,第一步需要获取到项目的日志,但是我本机的svn1.4没有安装命令行,重新运行1.4的安装包也没有命令行的选项... 那就升级到最新的svn1.8好了,下载最新的 ...
- C++之------运算符重载
① 什么是运算符重载? 何为C++的运算符重载呢? 其实就是运算符给它重新赋予新的含义或者多重含义.让它有另外一种新的功能. 为什么需要运算符重载? 面向对象中为了实现类的多态性,我们就引用了运算符 ...
- Qt之HTTPS登录(集成QNetworkAccessManager提前修改QSslConfiguration,然后post)
简述 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP ...
- Android Fragment中使用Intent组件拍照
要在activity里面去接受,然后传递给fragment对象,fragment有很多回调调用不到 你的设备有摄像头吗? 为了确保市场上的大多数设备都能运行你的程序,必须在项目中做一些检测,保证使用的 ...
- HttpWebRequest.Method 属性
public static void GetHead(string url) { var http = (HttpWebRequest)WebRequest.Create(url); http.Met ...
- codecomb 2093【牛宫】
题目描述 Description Hzgd神牛准备给自己盖一座很华丽的宫殿.于是,他看中了一块N*M的矩形空地.空地中每个格子都有自己的海拔高度.胡张想让他的宫殿的平均海拔在海平面之上(假设海平面的高 ...
- 锁sql server锁
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...
- UESTC_方老师买表 CDOJ 885
老师买表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Stat ...
- ZOJ3574(归并排序求逆数对)
Under Attack II Time Limit: 5 Seconds Memory Limit: 65536 KB Because of the sucessfully calcula ...