就是声明两个数组,一个模拟棋局,另一个模拟黑将不能走的位置。不过写得有点长了...

 #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 象棋的更多相关文章

  1. UVA-1589 象棋(模拟)

    题目:(传送门) 给出一个象棋的残局,下一步是黑棋走,判断黑棋是不是被将死. 思路: 读完这个题,知道是一个模拟题,然后想到用两个二维数组来模拟棋盘,一个(mp数组)用来存残局,一个(res数组)用来 ...

  2. [算法竞赛入门经典] 象棋 ACM/ICPC Fuzhou 2011, UVa1589 较详细注释

    Description: Xiangqi is one of the most popular two-player board games in China. The game represents ...

  3. 算法习题---4-1象棋(UVa1589)

    一:题目 在黑方只有一个“将”的情况下,红方只有(车.马.炮)(可以多个).帅的情况下,判断黑方是否被将死 (一)题目详解 其中棋盘按照坐标方式表示,左上角为(,),列数最大9,行数最大10 G 表示 ...

  4. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

  5. 局域网象棋游戏(C++实现,使用Socket,界面使用Win32,CodeBlocks+GCC编译)

    目录 成果 运行效果图 过程 1. 首先的问题是下棋的两端应该是什么样的? 2. 接下来的问题是怎么表示,怎么存储? 3. 然后应该怎么通信呢? 代码 main.cpp chinese_chess.h ...

  6. 简单的c#winform象棋游戏(附带源码)

    算法源自网络(网络源码连接:http://www.mycodes.net/161/6659.htm)   整体思路:用二维数组构建棋盘每一个数组元素封装为一个picturebox附带若干属性(例如:棋 ...

  7. BZOJ 1801中国象棋 DP

    1801: [Ahoi2009]chess 中国象棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1426  Solved: 826[Submit][ ...

  8. C#中国象棋+游戏大厅 服务器 + 客户端源码

    来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设 ...

  9. 中国象棋引擎的C#源代码

    以前写的中国象棋引擎的C#源程序,可在VS2010中编译运行,由于个人精力有限,难以完成后续的开发工作,如果谁感兴趣,请关注微信公众号(“申龙斌的程序人生”,ID:slbGTD),发送后台消息“象棋引 ...

随机推荐

  1. 【STL】-pair的用法

    初始化: std::pair<int, float> p; //initialize p.first and p.second with zero std::pair<int, co ...

  2. C++-指针和引用的区别

    1,不存在空引用,指针可以为空 2,引用更高效,使用前不需要测试是否为空 3,指针可以被赋给别的对象,引用则不可以更改 总之,在对象有可能什么也不指向或者指向不同的对象的时候应该使用指针.

  3. POJ 2296 二分+2-sat

    题目大意: 给定n个点,给每个点都安排一个相同的正方形,使这个点落在正方形的下底边的中间或者上底边的中间,并让这n个正方形不出现相互覆盖,可以共享同一条边,求 这个正方形最大的边长 这里明显看出n个点 ...

  4. 通过代码自定义cell 新浪微博页面显示

    通过代码自定义cell(cell的高度不一致)(如果高度一致的cell 用xib实现) 1.新建一个集成自UItableVIewCell的类 2.重写initWithStle :方法 - (insta ...

  5. [网络技术][转]PPTP连接过程

    转自:http://blog.csdn.net/zhu_hit/article/details/5698958 在未来几天会总结一下PPTP的工作过程,分为以下3篇讲述. 1. PPTP连接过程: 2 ...

  6. Repeater控件的分页效果

    <webdiyer:AspNetPager ID="AspNetPager1" runat="server" HorizontalAlign=" ...

  7. JAVA SERVLET专题(下)

    HTTP简介 ·WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵守一定的规则,这个规则就是HTTP协议. ·HTTP是hypertext transfer protocol(超文本传输协议)的 ...

  8. angularjs 选项卡 --- 自定义属性

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...

  9. Ogre学习笔记Basic Tutorial 前四课总结

    转自:http://blog.csdn.net/yanonsoftware/article/details/1011195 OGRE Homepage:http://www.ogre3d.org/   ...

  10. (转)js函数参数设置默认值

    原文:http://www.cnblogs.com/RightDear/archive/2013/06/26/3156652.html js函数参数设置默认值   php有个很方便的用法是在定义函数时 ...