fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6.  
  7. // 读入手牌
  8. String[] handStr = sc.nextLine().split(",");
  9. int[] hand = new int[handStr.length];
  10. for (int i = 0; i < handStr.length; i++) {
  11. hand[i] = Integer.parseInt(handStr[i].trim());
  12. }
  13.  
  14. // 读入当前出牌
  15. String[] currentStr = sc.nextLine().split(",");
  16. int[] current = new int[currentStr.length];
  17. for (int i = 0; i < currentStr.length; i++) {
  18. current[i] = Integer.parseInt(currentStr[i].trim());
  19. }
  20.  
  21. // 统计手牌频率
  22. int[] count = new int[16]; // 3~15,索引 3~15
  23. for (int card : hand) {
  24. if (card >= 3 && card <= 15) {
  25. count[card]++;
  26. }
  27. }
  28.  
  29. int L = current.length;
  30.  
  31. // 1. 找顺子
  32. List<Integer> minStraight = null;
  33. int currentMinCard = current[0];
  34. // 找所有可能的顺子
  35. for (int start = 3; start <= 15 - L + 1; start++) {
  36. boolean valid = true;
  37. for (int k = 0; k < L; k++) {
  38. if (count[start + k] < 1) {
  39. valid = false;
  40. break;
  41. }
  42. }
  43. if (valid && start > currentMinCard) {
  44. // 这个顺子可以出
  45. List<Integer> straight = new ArrayList<>();
  46. for (int k = 0; k < L; k++) {
  47. straight.add(start + k);
  48. }
  49. if (minStraight == null || start < minStraight.get(0)) {
  50. minStraight = straight;
  51. }
  52. }
  53. }
  54.  
  55. // 2. 找炸弹
  56. int minBomb = -1;
  57. for (int card = 3; card <= 15; card++) {
  58. if (count[card] >= 4) {
  59. if (minBomb == -1 || card < minBomb) {
  60. minBomb = card;
  61. }
  62. }
  63. }
  64.  
  65. // 3. 决定出什么
  66. List<Integer> result = new ArrayList<>();
  67. if (minStraight != null) {
  68. result = minStraight;
  69. } else if (minBomb != -1) {
  70. for (int i = 0; i < 4; i++) {
  71. result.add(minBomb);
  72. }
  73. }
  74. // 否则 result 为空
  75.  
  76. // 输出
  77. System.out.println(result);
  78. }
  79. }
Success #stdin #stdout 0.12s 56648KB
stdin
14,2,4,5,7,2,5,9,7,10,11,12,12,13,14,2,10,8,7
6,7,8,9,10
stdout
[7, 8, 9, 10, 11]