結果
問題 | No.832 麻雀修行中 |
ユーザー |
![]() |
提出日時 | 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;}}}}