-
题目描述:
-
牌只有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。
-
样例输入:
-
12233445566677 33
-
样例输出:
-
YES
#include<iostream> #include<string.h> using namespace std; int main() { char a[100]; int hash[10]; char b[100]; while(cin>>a) { int l=strlen(a); memset(hash,0,sizeof(hash)); for(int i=0;i<l;i++) hash[a[i]-'0']++; cin>>b; l=strlen(b);bool f=true; if(l<5) { for(int i=b[0]-'0'+1;i<10;i++) if(hash[i]>=l){f=false;break;} } else { int i=b[0]-'0'+1;//if(i>5)f=false; while(!hash[i])i++;int count=0; for(;i<10&&f;i++) { count=0; for(int j=i;j<10;j++) { if(hash[j])count++; else {count=0;break;} if(count==5){f=false;break;} } } } f==true?cout<<"NO\n":cout<<"YES\n"; } }