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 ...
随机推荐
- dojo Tree 添加、删除节点
var tree=this.tree; var store=tree.model.store; if(this.node){ console.log(this.node) var children=t ...
- 从几个sample来学习JAVA堆、方法区、JAVA栈和本地方法栈
最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 感觉有 ...
- 使用NPOI将数据库里信息导出Excel表格并提示用户下载
使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 //mvc项目可以传多个id以逗号相隔的字符串 public ActionResult ...
- HTML条件注释用法诠释
HTML条件注释用法诠释 注释内容以样式为例,如下: 1.支持所有IE浏览器 <!--[if IE]> <link rel="stylesheet" href=& ...
- js 属性类型
1.访问器属性 var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: ...
- 认识IL代码---从开始到现在 <第二篇>
·IL代码分析方法 ·IL命令解析 ·.NET学习方法论 1.引言 自从『你必须知道.NET』系列开篇以来,受到大家很多的关注和支持,给予了anytao巨大的鼓励和动力.俱往昔,我发现很多的园友都把目 ...
- build.gradle中引入jar
只需在 dependencies{}中添加: compile fileTree(include: ['*.jar'], dir: 'libs')
- H.264 RTPpayload 格式------ H.264 视频 RTP 负载格式
H.264 RTPpayload 格式------ H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +------------ ...
- codecomb 2098【stone】
题目描述 Description n个石堆围成一圈,提供两种操作: 1.每次将[L,R]堆的石子数量+k,其中,1<=L,R<=n,k>=0. 2.询问有最多石子的那一堆有多少石子. ...
- 【转】100行代码实现最简单的基于FFMPEG+SDL的视频播放器
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手.我刚接触FFMPEG的时候也感觉不知从何学起. 因此我把自己做项目过程中实现的一个非常简单的视频播放器 ...