邯郸哪里可以做网站,公司门户网站设计,网站建设价值,济南网站建设 泉诺题目描述
斗地主起源于湖北十堰房县#xff0c;据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的#xff0c;如今已风靡整个中国#xff0c;并流行于互联网上。
牌型#xff1a; 单顺#xff0c;又称顺子#xff0c;最少5张牌#xff0c;最多12张牌…题目描述
斗地主起源于湖北十堰房县据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的如今已风靡整个中国并流行于互联网上。
牌型 单顺又称顺子最少5张牌最多12张牌(3…A)不能有2也不能有大小王不计花色。
例如 3-4-5-6-7-87-8-9-10-J-Q3-4-5-6-7-8-9-10-J-Q-K-A
可用的牌 345678910JQKA2B(小王)C(大王)每种牌除大小王外有四种花色 (共有13×42张牌)
输入
输入的第一行为当前手中的牌
输入的第二行为已经出过的牌(包括对手出的和自己出的牌)
输出
最长的顺子
对手可能构成的最长的顺子(如果有相同长度的顺子输出牌面最大的那一个)
如果无法构成顺子则输出 NO-CHAIN。
样例输入
3-3-3-4-4-5-5-6-7-8-9-10-J-Q-K-A-A-A-A
4-5-6-7-8-8-8
样例输出
9-10-J-Q-K
思路 题目要求我们求出对方的最长顺子长度那么我们就要先得到对方的牌信息以此来推测对方的最长顺子长度。题目的输入带有我们自己所有的牌以及目前已经出去的牌我们由总拍数就能够得到对方的牌数以此来推测对方的最长顺子长度。 因为顺子不涉及2和大小王因此我们不需要考虑这两种牌对我们影响只需要考虑剩下牌如何产生顺子剩下的牌就是3---A这几种牌总共12种所以可以定义一个数组长度为12每个元素代表一种牌的个数是否为0为零就赋值为0否则赋值为1代表有这个牌因此最后我们就是求一个长度为12的数组的最长连续的1元素的长度用0n)的时间复杂度就可以完成要求。
代码
package Date3Point21;import java.util.*;public class MainD {public static void main(String[] args) {Scanner scannernew Scanner(System.in);String s1 scanner.nextLine();String s2 scanner.nextLine();s1s1-s2;String[] split s1.split(-);int[] numsnew int[12];Arrays.fill(nums,4);MapString ,Integer sToIntnew HashMap();sToInt.put(J,11);sToInt.put(Q,12);sToInt.put(K,13);sToInt.put(A,1);MapInteger ,String IntToSnew HashMap();IntToS.put(11,J);IntToS.put(12,Q);IntToS.put(13,K);IntToS.put(1,A);for(int i0;isplit.length;i){int num0;if(sToInt.containsKey(split[i])){numsToInt.get(split[i]);}else if(!Objects.equals(split[i], 2)){num Integer.parseInt(split[i]);}else{continue;}if(num1){nums[nums.length-1]--;}else{nums[num-3]--;}}String maxStr;int maxLen0;String str;int len0;for(int i0;inums.length;i){if(nums[i]0 || inums.length-1){if(nums[i]!0){len;strA;}if(len5 lenmaxLen){maxLenlen;maxStrstr;}else if(lenmaxLen len!0){if (maxStr.charAt(0)str.charAt(0)) {maxStrstr;}}len0;str;}else{len;String s;if(inums.length-1){sA;}else if(IntToS.containsKey(i3)){sIntToS.get(i3);}else{sString.valueOf(i3);}if(str.length()0){strs;}else{str-s;}}}if(maxLen0 || maxStr.length()5){System.out.println(NO-CHAIN);}else{System.out.println(maxStr);}}
}