/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { static int[] pai = new int[9]; static ArrayList<int[]> list = new ArrayList<>(); static int shanten = 14; static int[] hand = new int[9]; static int[] pat = new int[6]; public static void check() { int c = 0, p = 0; for (int i = 0; i < 9; i++) { if (hand[i] > pai[i]) { c += hand[i] - pai[i]; p = i; } } if (c < shanten) { shanten = c; list.clear(); pat[5] = -(p+1); list.add((int[])pat.clone()); } else if (c == shanten) { pat[5] = -(p+1); list.add((int[])pat.clone()); } } { int[] deal = new int[]{0,0,0,1,2,3,4,5,6,7,8,8,8}; for (int d : deal) hand[d]--; // your code goes here atama(); for (int[] res : list) TreeSet<String> set = new TreeSet<>(); for (int[] res : list) { for (int i = 0; i < 5; i++) { } for (int i = 0; i < 5; i++) { zs[i] = zs[i].replaceFirst(p, ""); zs[i] = z; } } } } static void atama() { for (int i = 0; i < 9; i++) { pai[i] -= 2; pat[0] = 11 * (i+1); kotsu(4, 0); juntsu(4, 0); pai[i] += 2; } } static void kotsu(int rem, int p) { if (rem == 0) { check(); return; } for (int i = p; i < 9; i++) { if (pai[i] < 4) continue; pai[i] -= 3; pat[5-rem] = 111 * (i+1); kotsu(rem - 1, i); juntsu(rem - 1, 0); pai[i] += 3; } } static void juntsu(int rem, int p) { if (rem == 0) { check(); return; } for (int i = p; i < 7; i++) { if (pai[i] == 0) continue; if (pai[i+1] == 0) continue; if (pai[i+2] == 0) continue; pai[i]--; pai[i+1]--; pai[i+2]--; pat[5-rem] = 111 * (i+1) + 12; juntsu(rem - 1, i); pai[i]++; pai[i+1]++; pai[i+2]++; } } }
1112345678999
1 和了の形 [11, 999, 123, 345, 678, -3] [11, 999, 123, 456, 678, -6] [11, 999, 123, 456, 789, -9] [22, 111, 999, 345, 678, -2] [55, 111, 999, 234, 678, -5] [88, 111, 999, 234, 567, -8] [99, 111, 123, 456, 789, -1] [99, 111, 234, 456, 789, -4] [99, 111, 234, 567, 789, -7] 待ちの形 [11, 12, 345, 678, 999] [11, 123, 45, 678, 999] [11, 123, 456, 78, 999] [11, 123, 456, 789, 99] [111, 2, 345, 678, 999] [111, 23, 456, 789, 99] [111, 234, 5, 678, 999] [111, 234, 56, 789, 99] [111, 234, 567, 8, 999] [111, 234, 567, 89, 99]