HelpMeWithTheGame

POJ-2996
写的比较长,逻辑总共三部分,printWhite和printBlack逻辑大致相同,只有几行的差异。

  1. 将给定棋盘精简
  2. printWhilte(重载comparator的compare)
  3. 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相关推荐

  1. 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 ...

  2. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  3. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  4. POJ 刷题系列:2993. Emag eht htiw Em Pleh

    POJ 刷题系列:2993. Emag eht htiw Em Pleh 传送门:2993. Emag eht htiw Em Pleh 题意: 与2996相反,给出所有棋子的坐标关系,可视化boar ...

  5. POJ 3268 D-Silver Cow Party

    http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  6. poj 2559 Largest Rectangle in a Histogram 栈

    // poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...

  7. POJ 2528 Mayor's posters(线段树)

    题目大意 贴海报.每张海报的高度都是一样的,唯独宽度不一样.每张海报只能占用整数倍的单位线段长度,贴了 n(n<=10000) 张海报之后,有几张能够看见(有一个角能看见这张海报也算被看见了)? ...

  8. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)

    题目链接 题目一看就是最小点覆盖,这道题与POJ - 3041 算是一类题,但是3041算是一道十分裸的,因为删除的是整行或者整列,所以图其实是现成的,但是本题的难点就在如何建图. 思路:首先还是尽量 ...

  9. poj 2681 字符串

    http://poj.org/problem?id=2681 给你任意长度的字符串,找出两串字符中不相同的字符个数(总数) #include<string> #include<cst ...

  10. (区间dp 或 记忆化搜素 )Brackets -- POJ -- 2955

    http://poj.org/problem?id=2955 Description We give the following inductive definition of a "reg ...

最新文章

  1. Python学习笔记:基础
  2. 关于mingw编译Qt时无法编译opengl es2(ANGLE)版本的问题
  3. onnx模型推理(python)
  4. c语言简短的泡沫排序法编程,冒泡排序--简单(c语言)
  5. Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(9)...
  6. php pdo fetchassoc,pdo执行fetch查询语句,出现500错误,请问应该怎么写
  7. 11.CSS border边框
  8. Linux调试分析诊断利器——strace
  9. WebService:JAX-WS实现WebService
  10. Kubernetes的调度机制
  11. 做了 7 年开源数据库开发,我学到了什么?
  12. 怎样卸载deepin系统_系统卸载
  13. 应急响应入侵排查之第二篇Linux
  14. 10分钟搞懂CMMI
  15. 语法分析器实现过程(java)
  16. 决策边界(decision boundary)的理解
  17. 计算机科学与技术补中益气丸的成分,经典名方,补中益气丸运用解析
  18. Postman 批量执行请求
  19. 我理解的myisam引擎之二 MyISAM表(MYD)存储格式
  20. .Snowflake Snow Snowflakes——解题报告

热门文章

  1. C#如何调用以管理员身份运行的cmd命令提示符
  2. linux系统打开m3u8文件,linux:m3u8:如何从.m3u8中列出的段手动下载...
  3. python使用RCON,连接游戏服务器求生之路2、我的世界等
  4. skimage transform SimilarityTransform 使用记录
  5. 华为MU609调试记录
  6. c++实现求解欧拉函数和本原根
  7. 给信息安全专业学生的书单
  8. PostgreSQL系统表 pg_stats
  9. 管理系统表达式配置页面及js
  10. oracle runc n m,19cRAC增删节点