結果
問題 | No.832 麻雀修行中 |
ユーザー | YamaKasa |
提出日時 | 2019-05-24 22:31:36 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 149 ms / 2,000 ms |
コード長 | 2,059 bytes |
コンパイル時間 | 2,521 ms |
コンパイル使用メモリ | 80,132 KB |
実行使用メモリ | 54,484 KB |
最終ジャッジ日時 | 2024-09-17 10:58:57 |
合計ジャッジ時間 | 8,137 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 25 |
ソースコード
import java.util.ArrayList; import java.util.List; import java.util.*; import java.util.HashSet; import java.util.Set; public class Main{ static int[] b = new int [10]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { String s = sc.next(); //if(s.length() == 1) break; int[] a = new int[14]; int[] c = new int[10]; for(int i = 0; i < s.length(); i++) { a[i] = Integer.parseInt(s.substring(i, i + 1)); c[a[i]]++; } Set<Integer> set = new HashSet<Integer>(); List<Integer> list = new ArrayList<Integer>(); for(int i = 1; i <= 9; i++) { a[13] = i; System.arraycopy(c, 0, b, 0, 10); b[i]++; if(b[i] >= 5) continue; flag = false; dfs(0); if(flag) { list.add(i); set.add(i); } } for (int i = 1; i <= 9; i++) { if (!set.contains(i)) { a[13] = i; int[] d = new int[10]; for (int j : a) { d[j]++; } boolean flag1 = true; for (int j = 0; j < 10; j++) { if (d[j] != 0 && d[j] != 2) { flag1 = false; break; } } if (flag1){ list.add(i); } } } if(list.size() == 0) { System.out.println(0); }else { Collections.sort(list); for(int i = 0; i < list.size(); i++){ System.out.println(list.get(i)); } } } sc.close(); } static boolean flag = false; static void dfs(int n) { if(n == 5) { flag = true; return; } if(flag) return; if(n == 0) { for(int i = 1; i <= 9; i++) { if(b[i] >= 2) { b[i] -= 2; dfs(n + 1); b[i] += 2; } } } for(int i = 1; i + 2 <= 9; i++) { if(b[i] >= 1 && b[i + 1] >= 1 && b[i + 2] >= 1) { b[i]--; b[i + 1]--; b[i + 2]--; dfs(n + 1); b[i]++; b[i + 1]++; b[i + 2]++; } } for(int i = 1; i <= 9; i++) { if(b[i] >= 3) { b[i] -= 3; dfs(n + 1); b[i] += 3; } } } }