UVA11210麻将
来源:互联网 发布:ubuntu升级火狐浏览器 编辑:程序博客网 时间:2024/04/25 07:37
最简单的胡法,四个三张+一对
先枚举第14张牌
然后找出1对的牌之后dfs搜索三张的搭配
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.StreamTokenizer;import java.math.BigInteger;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;import java.util.Scanner;import java.util.Stack;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException{ StreamTokenizer cin = new StreamTokenizer(new BufferedInputStream(System.in)); InputReader in = new InputReader(System.in) ; PrintWriter out = new PrintWriter(System.out) ; int k = 1 ; String s ; for(;;){ s = in.next() ; if(s.equals("0")) break ; new Task().solve(k++ , s , in, out) ; //out.flush() ; } out.flush() ; }}class Task{ static ArrayList<String> majiang = new ArrayList<String>(Arrays.asList( "1T" , "2T" , "3T" , "4T" , "5T" , "6T" , "7T" , "8T" , "9T" , "1S" , "2S" , "3S" , "4S" , "5S" , "6S" , "7S" , "8S" , "9S" , "1W" , "2W" , "3W" , "4W" , "5W" , "6W" , "7W" , "8W" , "9W" , "DONG" , "NAN" , "XI" , "BEI" , "ZHONG" , "FA" , "BAI" ) ); static int[] mj = new int[13] ; static int[] num = new int[34] ; boolean dfs(int d){ for(int i = 0 ; i < 34 ; i++){ if(num[i] >= 3){ if(d == 3) return true ; num[i] -= 3 ; if(dfs(d + 1)) return true ; num[i] += 3 ; } } for(int i = 0 ; i <= 24 ; i++){ if((i%9 <= 6) && num[i] >= 1 && num[i+1] >= 1 && num[i+2] >= 1){ if(d == 3) return true ; num[i]-- ; num[i+1]-- ; num[i+2]-- ; if(dfs(d + 1)) return true ; num[i]++ ; num[i+1]++ ; num[i+2]++ ; } } return false ; } boolean helper(){ for(int i = 0 ; i < 34 ; i++){ if(num[i] >= 2){ num[i] -= 2 ; if(dfs(0)) return true ; num[i] += 2 ; } } return false ; } public void solve(int testcase , String s , InputReader in , PrintWriter out) throws IOException{ ArrayList<String> ans = new ArrayList<String>() ; mj[0] = majiang.indexOf(s) ; for(int i = 1 ; i <= 12 ; i++) mj[i] = majiang.indexOf(in.next()) ; for(int i = 0 ; i < 34 ; i++){ Arrays.fill(num, 0) ; for(int j = 0 ; j <= 12 ; j++) num[mj[j]]++ ; if(num[i] >= 4) continue ; num[i]++ ; if(helper()) ans.add(majiang.get(i)) ; num[i]-- ; } out.print("Case " + testcase + ":") ; if(ans.size() == 0) out.println(" Not ready") ; else{ for(String e : ans) out.print(" " + e) ; out.println() ; } }}class InputReader{ public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream){ reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = null; } public String next(){ while(tokenizer == null || !tokenizer.hasMoreTokens()){ try{ tokenizer = new StringTokenizer(reader.readLine()); }catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); }}
0 0
- UVA11210麻将
- uva11210
- UVA11210
- 暑期集训训练赛2(uva11210) 你会打麻将吗?
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将
- uva11210(回溯+枚举)
- uva11210 Chinese Mahjong
- 麻将,麻将!
- 快乐麻将
- 麻将趣事
- 广东麻将
- 麻将游戏
- 麻将类
- 11. PHP 运算符
- ssh 远程登录不用密码 ssh-keygen -t rsa
- 对arraylist中size大小的问题
- Struts2----自定义action的学习心得
- Qt C++中的关键字explicit
- UVA11210麻将
- PCQQ UDP协议的研究<7>——0828 接收包
- POJ3159差分约束最短路径问题
- 记录
- 提高PHP编程效率的53个要点
- Length of Last Word
- mongo常用命令
- iOS开发之沙盒和文件操作(汇总)
- HDU5311