UVA 1589 java
import java.util.*;class Main2 {static char[][] cb=new char[12][10];//放置所有棋子的棋盘static char[][] ab=new char[12][10];//标记红方可到达的位置public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n,i,j,a1,b1;int[][] Ch=new int[8][3];while(true) {n=sc.nextInt();//红方棋子个数a1=sc.nextInt();//黑将横坐标b1=sc.nextInt();//黑将纵坐标if(n*n+a1*a1+b1*b1==0)break;for (int k = 0; k < cb.length; k++) {for (int l = 0; l < cb[0].length; l++) {Arrays.fill(cb[k], 'A');//初始化Arrays.fill(ab[k], 'A');//初始化}}cb[a1][b1]='B';//标记黑将char ch;for (int k = 0; k < n; k++) {ch=sc.next().toCharArray()[0];i=sc.nextInt();j=sc.nextInt();cb[i][j]=ch;//摆放旗子到棋盘Ch[k][0]=i;//该棋子横坐标Ch[k][1]=j;//该棋子纵坐标}for (int m = 0; m < n; m++) {int a=Ch[m][0];//读取棋子横坐标int b=Ch[m][1];//读取棋子纵坐标//红方棋子为 :車 或 帅,进行标记if(cb[a][b]=='R' || cb[a][b]=='G' ) RG(a,b);//红方棋子为 :马,进行标记else if(cb[a][b]=='H') H(a,b);//红方棋子为 :炮,进行标记else if(cb[a][b]=='C') C(a,b);}if(judge(a1,b1)) {System.out.println("YES");}else {System.out.println("NO");}}}//炮private static void C(int a, int b) {if(b>=4 && b<=6 && a==1)//处在黑方,九宫格的第一行if(cb[2][b]!='A'&&cb[2][b]!='B') ab[3][b]='S';//如果下方有红棋,则跑到第三行int c,d;for(c=a-1;c>=1;c--){if(cb[c][b]=='B') return;if(cb[c][b]!='A') break;//找到炮上方的炮架}for(d=c-1;d>=1;d--){ab[d][b]='S';//炮架上方的位置都是可以到达的位置if(cb[d][b]!='A'&&cb[d][b]!='B') break;//直到遇到红方棋子}for(c=b+1;c<=9;c++){if(cb[a][c]=='B') return;if(cb[a][c]!='A') break;//找到炮右方的炮架}for(d=c+1;d<=9;d++){ab[a][d]='S';//炮架上方的位置都是可以到达的位置if(cb[a][d]!='A'&&cb[a][d]!='B') break;//直到遇到红方棋子}for(c=b-1;c>=1;c--){if(cb[a][c]=='B') return;if(cb[a][c]!='A') break;//找到炮左方的炮架}for(d=c-1;d>=1;d--){ab[a][d]='S';//炮架上方的位置都是可以到达的位置if(cb[a][d]!='A'&&cb[a][d]!='B') break;//直到遇到红方棋子}}//马:八个方位,如果可到达,且未越界,则标记private static void H(int a, int b) {if(cb[a][b+1]=='A' && b+2<=9&&a-1>=1) ab[a-1][b+2]='S';if(cb[a][b+1]=='A' && b+2<=9&&a+1<11) ab[a+1][b+2]='S';if(cb[a][b-1]=='A' && b-2>=1&&a-1>=1) ab[a-1][b-2]='S';if(cb[a][b-1]=='A' && b-2>=1&&a+1<11) ab[a+1][b-2]='S';if(cb[a+1][b]=='A' && b-1>=1&&a+2<11) ab[a+2][b-1]='S';if(cb[a+1][b]=='A' && b+1<=9&&a+2<11) ab[a+2][b+1]='S';if(cb[a-1][b]=='A' && b-1>=1&&a-2>=1) ab[a-2][b-1]='S';if(cb[a-1][b]=='A' && b+1<=9&&a-2>=1) ab[a-2][b+1]='S';}//帅看作和車一样的功能:棋子所在的那一行那一列都可以到达,直到遇到红方棋子private static void RG(int a, int b) {int c;for (c = a-1; c >= 1; c--) {//棋子上边ab[c][b]='S';if(cb[c][b]!='A' && cb[c][b]!='B')break;}for (c = a+1; c <= 10; c++) {//棋子下边ab[c][b]='S';if(cb[c][b]!='A' && cb[c][b]!='B')break;}for (c = b+1; c <= 9; c++) {//棋子右边ab[a][c]='S';if(cb[a][c]!='A' && cb[a][c]!='B')break;}for (c = b-1; c >= 1; c--) {//棋子左边ab[a][c]='S';if(cb[a][c]!='A' && cb[a][c]!='B')break;}}private static boolean judge(int i, int j) {boolean flag=true;//将军if(i+1<4 && ab[i+1][j]!='S') flag=false;//黑将在九宫格的前两行,他的下方位置他可以走,则没有将军if(i-1>0 && ab[i-1][j]!='S') flag=false;//黑将在九宫格的后两行,他的上方位置他可以走,则没有将军if(j+1<7 && ab[i][j+1]!='S') flag=false;//黑将在九宫格的前两列,他的右方位置他可以走,则没有将军if(j-1>3 && ab[i][j-1]!='S') flag=false;//黑将在九宫格的后两列,他的左方位置他可以走,则没有将军return flag;}
}
UVA 1589 java相关推荐
- UVA - 1589 Xiangqi
Xiangqi UVA - 1589 题目传送门 解决方法:判断黑棋是否能有可以下的地方 AC代码: #include <cstdio> #include <iostream> ...
- UVA 1589 象棋
题意: 给出一个黑方的将, 然后 红方有 2 ~ 7 个棋子, 给出摆放位置,问是否已经把黑将将死, 红方已经将军. 分析: 分情况处理, 车 马 炮, 红将情况跟车是一样的. 建一个数组board保 ...
- UVA 1589 Xiangqi——模拟
模拟题,我的做法是先让黑将分别上下左右移动,对每一种情况 先判断是否能被马将死(列举8种情况),然后判断是否能被 将 车 炮 将死(以黑将为中心十字展开,判断是否有 将 车 炮) 注意: 1.开局两 ...
- Xianqi UVa 1589
这道题是一道模拟题,就是用来判断黑的一方能不能存活,所以就将黑的将军所有合法的移动情况都表示出来,看一看黑将军是否被红的将军,就可以了,主要注意的以下几点: 1.如果黑的能够直接杀死红的,那就输出 N ...
- Xiangqi UVA - 1589(蛮好玩的中国象棋~·)
题目: 给出一个中国象棋残局,黑方只有将,红方有仅包含马車炮帅在内的n(2≤n≤7)个棋子,且黑方已被将军,输出是否已被将死(无路可走) R(车) C(炮) H(马) G(帅)(将) https:// ...
- uva 1589 - Xiangqi
把所有红方的攻击范围标记出来,判断黑方四个方向是否在红方范围内 #include <iostream> #include <cstdio> #include <vecto ...
- 象棋 UVA 1589
总结:这个代码可就长太多了- - 题目是要求我们看看能否将死对面黑将,炮,帅,车在逻辑上的移动我们可以归为一类,但就是炮呢在遇到自己的同色棋子之前的位置他是无法进行进攻的,所以我们需要创建一个atta ...
- UVa Online Judge 西班牙Valladolid 在线判官 和 uDebug使用简单教程
udebug使用在后面 https://uva.onlinejudge.org/ 1.这是主界面,如果你还没有账号,那么就点击图中的register. 2.然后就是填写信息,邮箱要用gmail,信息填 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
最新文章
- php js统计链接点击次数,JS实现在线统计一个页面内鼠标点击次数的方法
- 用python的turtle画圆-怎么用python画圆
- 懂球帝 X 七牛云:纯粹有趣的足球遇上简单可信赖的技术
- Spring Boot 动态注入的两种方式
- 区块链不适用的若干场景
- html 块级注释,HTML blockquote 标签 | 教程 | codingbefore
- easyui 分页保存checkbox的选中状态
- 2022年计算机软件水平考试软件设计师(中级)练习题及答案
- 电磁场理论基础 01-17
- codeblock的下载
- 远程服务器批量管理员权限,Win10系统下怎样实现批量远程桌面管理?Win10系统进行批量远程管理的方法...
- 模拟停车场管理系统(栈和队列的应用)
- python实现.jpeg转.jpg
- 如何将本地代码保存至码云中
- 你知道吗?计算机界也有诺贝尔奖!
- 垂直网站之路:金融风暴加速向电子商务转型
- WinSCP乱码解决
- 读PPK谈javascript
- XSS注入进阶练习篇(三) XSS原型链污染
- Java判断单个字符是否为空格
热门文章
- [Jeremy Wu]冒险之路,平凡之路【详细注释版】
- Adobe Dreamweaver 序列号 过期
- 4.1安卓html样式,界面样式大改版!安兔兔v4.1新版发布
- 折弯机使用说明书_折弯机的操作流程和应用方法
- 论文解读《MSNet-4mC:学习有效的多尺度表示来识别DNAn4-甲基胞嘧啶位点》
- 可导/可微/连续的关系
- Git cherry-pick 复制多个commit
- js变量拼接单引号和双引号
- OWASP DVWA XSS reflectedstored全系列
- Jackson中JsonNode的取值asText()和textValue()区别