※北京邮电大学 打牌(java)(桶排序)

题目描述
牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。  规则:出牌牌型有5种   [1]一张 如4 则5...9可压过 [2]两张 如44 则55,66,77,...,99可压过 [3]三张 如444 规则如[2] [4]四张 如4444 规则如[2] [5]五张 牌型只有12345 23456 34567 45678 56789五个,后面的比前面的均大。
输入描述:
输入有多组数据。
每组输入两个字符串(字符串大小不超过100)a,b。a字符串代表手中牌,b字符串代表出的牌。
输出描述:
压过输出YES 否则NO。
示例1
输入
复制
12233445566677
33
输出
复制
YES
import java.util.*;
import java.io.*;
import java.text.*;
import java.math.*;
public class Main{
	static int count;
	public static void main(String[] args) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String a;
			while((a = br.readLine()) != null) {
				String b = br.readLine();
				char[] cha = a.toCharArray();
				char[] chb = b.toCharArray();
				int lena = cha.length;
				int lenb = chb.length;
				int[] arr = new int[10];
				for(int i = 0; i < lena; i++) {
					arr[cha[i]-'0']++;
				}
				boolean flag = false;
				if(lenb < 5) {
					int n = chb[0] - '0';
					for(int i = n+1; i <= 9; i++) {
						if(arr[i] >= lenb) {
							flag = true;
							break;
						}
					}
				}
				else {
					int n = chb[0] - '0';
					for(int i = n+1; i <= 5; i++) {
						while(i <= 9 && arr[i] >= 1) {
							i++;
						}
						if(i - n > 5) {
							flag = true;
							break;
						}
					}					
				}
				if(flag) System.out.println("YES");
				else System.out.println("NO");
			}
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}
发布了252 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43306331/article/details/104319329