HelpMeWithTheGame|POJ-2996
HelpMeWithTheGame
POJ-2996
写的比较长,逻辑总共三部分,printWhite和printBlack逻辑大致相同,只有几行的差异。
- 将给定棋盘精简
- printWhilte(重载comparator的compare)
- printBlack
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;public class HelpMeWithTheGame {static char[][] matrix;static char[] column = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };static int[] row = { 8, 7, 6, 5, 4, 3, 2, 1 };public static void main(String[] args) {// TODO Auto-generated method stubinput();printWhite();printBlack();}private static void printBlack() {String arr[] = new String[30];int index = 0;for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {if (matrix[i][j] >= 'a' && matrix[i][j] <= 'z') {String temp = new String("");if (matrix[i][j] != 'p') {temp += (char) (matrix[i][j] - 32);}temp += column[j];temp += row[i];arr[index++] = temp;}}}int count = index;String temp[] = new String[count];for (int i = 0; i < temp.length; i++) {temp[i] = arr[i];}Arrays.sort(temp, new Comparator<String>() {@Override// KQRBNP,类型优先,行大优先,同类同行列小优先public int compare(String o1, String o2) {char f1 = o1.charAt(0), f2 = o2.charAt(0);// 类别比较if ((f1 != f2 && o1.length() == 3 && o2.length() == 3) || o1.length() != o2.length()) {// 含Pif (o1.length() < o2.length()) {return 1;} else if (o1.length() > o2.length()) {return -1;}// 不含Pif (f1 == 'K')return -1;else if (f1 == 'Q' && (f2 == 'R' || f2 == 'B' || f2 == 'N'))return -1;else if (f1 == 'R' && (f2 == 'B' || f2 == 'N'))return -1;else if (f1 == 'B' && f2 == 'N')return -1;elsereturn 1;}// 行比较// KQRBNP,类型优先,行小优先,同类同行列小优先int r1 = -1, r2 = -1;if (f1 >= 'A' && f1 <= 'Z')r1 = o1.charAt(2);elser1 = o1.charAt(1);if (f2 >= 'A' && f2 <= 'Z')r2 = o2.charAt(2);elser2 = o2.charAt(1);if (r1 < r2)return 1;else if (r1 > r2)return -1;// 列比较char c1 = '-', c2 = '-';if (f1 >= 'A' && f1 <= 'Z')c1 = o1.charAt(1);elsec1 = o1.charAt(0);if (f2 >= 'A' && f2 <= 'Z')c2 = o2.charAt(1);elsec2 = o2.charAt(0);if (c1 < c2)return -1;elsereturn 1;}});for (int i = 0; i < index; i++) {if (i == 0) {System.out.print("Black: " + temp[i]);} else {System.out.print("," + temp[i]);}}System.out.println();}private static void printWhite() {// Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4String arr[] = new String[30];int index = 0;for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {if (matrix[i][j] >= 'A' && matrix[i][j] <= 'Z') {String temp = new String("");if (matrix[i][j] != 'P') {temp += matrix[i][j];}temp += column[j];temp += row[i];arr[index++] = temp;}}}int count = index;String temp[] = new String[count];for (int i = 0; i < temp.length; i++) {temp[i] = arr[i];}Arrays.sort(temp, new Comparator<String>() {@Override// KQRBNP,类型优先,行小优先,同类同行列小优先public int compare(String o1, String o2) {char f1 = o1.charAt(0), f2 = o2.charAt(0);// 类别比较if ((f1 != f2 && o1.length() == 3 && o2.length() == 3) || o1.length() != o2.length()) {// 含Pif (o1.length() < o2.length()) {return 1;} else if (o1.length() > o2.length()) {return -1;}// 不含Pif (f1 == 'K')return -1;else if (f1 == 'Q' && (f2 == 'R' || f2 == 'B' || f2 == 'N'))return -1;else if (f1 == 'R' && (f2 == 'B' || f2 == 'N'))return -1;else if (f1 == 'B' && f2 == 'N')return -1;elsereturn 1;}// 行比较// KQRBNP,类型优先,行小优先,同类同行列小优先int r1 = -1, r2 = -1;if (f1 >= 'A' && f1 <= 'Z')r1 = o1.charAt(2);elser1 = o1.charAt(1);if (f2 >= 'A' && f2 <= 'Z')r2 = o2.charAt(2);elser2 = o2.charAt(1);if (r1 < r2)return -1;else if (r1 > r2)return 1;// 列比较char c1 = '-', c2 = '-';if (f1 >= 'A' && f1 <= 'Z')c1 = o1.charAt(1);elsec1 = o1.charAt(0);if (f2 >= 'A' && f2 <= 'Z')c2 = o2.charAt(1);elsec2 = o2.charAt(0);if (c1 < c2)return -1;elsereturn 1;}});for (int i = 0; i < index; i++) {if (i == 0) {System.out.print("White: " + temp[i]);} else {System.out.print("," + temp[i]);}}System.out.println();}// 简化二维矩阵private static void input() {Scanner sc = new Scanner(System.in);matrix = new char[8][33];sc.nextLine();for (int i = 0; i < matrix.length; i++) {matrix[i] = sc.nextLine().toCharArray();sc.nextLine();}for (int i = 0; i < matrix.length; i++) {int index = 2;for (int j = 0; j < 8; j++) {matrix[i][j] = matrix[i][index];index += 4;}}}
}
HelpMeWithTheGame|POJ-2996相关推荐
- Emag eht htiw Em Pleh POJ - 2993
Emag eht htiw Em Pleh POJ - 2993 题目链接:https://vjudge.net/problem/POJ-2993 题意:Help Me with the Game P ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法: (1)枚举 (1753,2965) (2)贪心(13 ...
- POJ 刷题系列:2993. Emag eht htiw Em Pleh
POJ 刷题系列:2993. Emag eht htiw Em Pleh 传送门:2993. Emag eht htiw Em Pleh 题意: 与2996相反,给出所有棋子的坐标关系,可视化boar ...
- POJ 3268 D-Silver Cow Party
http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...
- poj 2559 Largest Rectangle in a Histogram 栈
// poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...
- POJ 2528 Mayor's posters(线段树)
题目大意 贴海报.每张海报的高度都是一样的,唯独宽度不一样.每张海报只能占用整数倍的单位线段长度,贴了 n(n<=10000) 张海报之后,有几张能够看见(有一个角能看见这张海报也算被看见了)? ...
- POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)
题目链接 题目一看就是最小点覆盖,这道题与POJ - 3041 算是一类题,但是3041算是一道十分裸的,因为删除的是整行或者整列,所以图其实是现成的,但是本题的难点就在如何建图. 思路:首先还是尽量 ...
- poj 2681 字符串
http://poj.org/problem?id=2681 给你任意长度的字符串,找出两串字符中不相同的字符个数(总数) #include<string> #include<cst ...
- (区间dp 或 记忆化搜素 )Brackets -- POJ -- 2955
http://poj.org/problem?id=2955 Description We give the following inductive definition of a "reg ...
最新文章
- Python学习笔记:基础
- 关于mingw编译Qt时无法编译opengl es2(ANGLE)版本的问题
- onnx模型推理(python)
- c语言简短的泡沫排序法编程,冒泡排序--简单(c语言)
- Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(9)...
- php pdo fetchassoc,pdo执行fetch查询语句,出现500错误,请问应该怎么写
- 11.CSS border边框
- Linux调试分析诊断利器——strace
- WebService:JAX-WS实现WebService
- Kubernetes的调度机制
- 做了 7 年开源数据库开发,我学到了什么?
- 怎样卸载deepin系统_系统卸载
- 应急响应入侵排查之第二篇Linux
- 10分钟搞懂CMMI
- 语法分析器实现过程(java)
- 决策边界(decision boundary)的理解
- 计算机科学与技术补中益气丸的成分,经典名方,补中益气丸运用解析
- Postman 批量执行请求
- 我理解的myisam引擎之二 MyISAM表(MYD)存储格式
- .Snowflake Snow Snowflakes——解题报告
热门文章
- C#如何调用以管理员身份运行的cmd命令提示符
- linux系统打开m3u8文件,linux:m3u8:如何从.m3u8中列出的段手动下载...
- python使用RCON,连接游戏服务器求生之路2、我的世界等
- skimage transform SimilarityTransform 使用记录
- 华为MU609调试记录
- c++实现求解欧拉函数和本原根
- 给信息安全专业学生的书单
- PostgreSQL系统表 pg_stats
- 管理系统表达式配置页面及js
- oracle runc n m,19cRAC增删节点