题目描述:
牌只有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<cstdio> #include<cstring> using namespace std; int main(){ char a[100],b[100]; while(gets(a)&&gets(b)){ int len=strlen(b); int i,flag=0; int len1=strlen(a); switch(len){ case 1: for(i=0;i<len1;i++){ if(a[i]>b[0]) flag=1; } break; case 2: for(i=0;i<len1-1;i++){ if(a[i]==a[i+1]) { if(a[i]>b[0]) flag=1; } } break; case 3: for(i=0;i<len1-2;i++){ if(a[i]==a[i+1]&&a[i]==a[i+2]) { if(a[i]>b[0]) flag=1; } } break; case 4: for(i=0;i<len1-3;i++){ if(a[i]==a[i+1]&&a[i]==a[i+2]&&a[i]==a[i+3]) { if(a[i]>b[0]) flag=1; } } break; case 5: int count=0,j; for(i=0;i<len1-1;i++) { if(a[i]==a[i+1]) { for(j=i;j<len1-1;j++) {a[j]=a[j+1];} len1--; } } for(i=0;i<len1-4;i++) { if(a[i]==a[i+1]-1 && a[i+1]==a[i+2]-1 && a[i+2]==a[i+3]-1 && a[i+3]==a[i+4]-1) { if(a[i]>b[0]) flag=1; } } } if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }