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 ...
随机推荐
- [c language] getopt 其参数optind 及其main(int argc, char **argv) 参数解释
getopt被用来解析命令行选项参数.#include <unistd.h> extern char *optarg; //选项的参数指针extern int optind, //下一次调 ...
- Mysql MEMORY 引擎
CREATE TABLE `m` ( `) unsigned NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `ctime` ) NOT NULL, `ltim ...
- python基础教程第4章——字典
1.映射(mapping):通过名字引用值的数据结构.字典是Python中唯一内建的映射类型,字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字.字符串甚至是元组. 2.字 ...
- 前端上将字符串用语音读出来只能在IE上运行 其他不行 代码极少
先保存保存自己的笔记 有高手看到求指点 <script type="text/javascript"> var VoiceObj; try { VoiceObj = n ...
- T-SQL 脚本
1.USE语句 USE语句用于设置当前数据库,如果没有USE语句,那么就由执行脚本的任何用户来确定执行脚本时当前数据库是正确的.如果只是一个通用脚本,那么省去USE语句实际上可能更有益.通常,如果在脚 ...
- C# is 与 as 运算符
as运算符有一定的适用范围,它只适用于引用类型或可以为null的类型,而无法执行其他的转换,如值类型的转换以及用户自定义的类型转换,这类转换应该适用强制转换表达式来执行.as当转换不了的时候返回nul ...
- centos单用户模式:修改ROOT密码和grub加密
centos单用户模式:修改ROOT密码和grub加密 CentOSLinux网络应用配置管理应用服务器 Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 ...
- jQuery多版本的使用,同一文件多个版本引用
<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- Linux系统编程(7)—— 进程之进程概述
我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体.现在我们全面了解一下其中都有哪些信息. 进程id.系统中每个进程有 ...
- BFS visit tree
There are two ways to conduct BFS on tree. Solution 1 -- Given level Use recursion to find given lev ...