题目描述
牌只有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
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char s1[101],s2[101];
int a[100]= {0},num2[100]= {0};
scanf("%s%s", s1,s2);
int len1 = strlen(s1);
int len2 = strlen(s2);
for(int i = 0; i < len1; i++)
{
a[s1[i]-'0']++;
}
for(int i = 0; i < len2; i++)
num2[i] = s2[i] - '0';
int flag = 0;
if(len2 == 1)
{
for(int i = 0; i < 10; i++)
if(i > num2[0] && a[i] > 0)
{
flag = 1;
break;
}
}
if(len2 == 2)
{
for(int i = 0; i < 10; i++)
if(i > num2[0] && a[i] > 1)
{
flag = 1;
break;
}
}
if(len2 == 3)
{
for(int i = 0; i < 10; i++)
if(i > num2[0] && a[i] > 2)
{
flag = 1;
break;
}
}
if(len2 == 4)
{
for(int i = 0; i < 10; i++)
if(i > num2[0] && a[i] > 3)
{
flag = 1;
break;
}
}
if(len2 == 5)
{
for(int i = num2[0]; i < 10; i++)
if(a[i]>0&&a[i+1]>0&&a[i+2]>0&&a[i+3]>0&&a[i+4]>0)
{
flag = 1;
}
}
if(flag == 1)
printf("YES");
else
printf("NO");
return 0;
}