输入有多组数据。 每组输入两个字符串(字符串大小不超过100)a,b。a字符串代表手中牌,b字符串代表出的牌。
压过输出YES 否则NO。
12233445566677 33
YES
#include<stdio.h> int main(){ char hand[105],desk[10]; while(scanf("%s",&hand)!=EOF){ int nums1[10],len2=0; scanf("%s",&desk); for(int i=0;i<10;i++){ nums1[i]=0; } for(int i=0;hand[i]!='\0';i++){ int x=hand[i]-'0'; nums1[x]++; } for(int i=0;desk[i]!='\0';i++){ len2++; } if(len2==1){ int flag=0,y=desk[0]-'0'; for(int i=y+1;i<10;i++){ if(nums1[i]!=0){ flag=1; printf("YES"); break; } } if(flag==0) printf("NO"); } if(len2==2){ int flag=0,y=desk[0]-'0'; for(int i=y+1;i<10;i++){ if(nums1[i]>1){ flag=1; printf("YES"); break; } } if(flag==0) printf("NO"); } if(len2==3){ int flag=0,y=desk[0]-'0'; for(int i=y+1;i<10;i++){ if(nums1[i]>2){ flag=1; printf("YES"); break; } } if(flag==0) printf("NO"); } if(len2==4){ int flag=0,y=desk[0]-'0'; for(int i=y+1;i<10;i++){ if(nums1[i]>3){ flag=1; printf("YES"); break; } } if(flag==0) printf("NO"); } if(len2==5){ int flag=0,y=desk[0]-'0'; for(int i=y+1;i<6;i++){ int count=0; for(int j=0;j<5;j++){ if(nums1[i+j]!=0) count++; } if(count==5){ flag=1; printf("YES"); break; } } if(flag==0) printf("NO"); } } return 0; }
#include<stdio.h> #include<string.h> int main(void) { int tmp[10] = {0}; char a[100]; char b[5]; scanf("%s", &a); scanf("%s", &b); int i; for (i=0; i<strlen(a); i++) { //记录每个数字出现了多少次。 tmp[a[i]-'0']++; } if (strlen(b)<5) { // 非同花顺 for (i=b[0]-'0'+1; i<10 && tmp[i]<strlen(b);i++); i==10?printf("NO"):printf("YES"); } else { // 同花顺 for (i=b[0]-'0'+1; i<6 && (tmp[i]*tmp[i+1]*tmp[i+2]*tmp[i+3]*tmp[i+4]==0); i++); i==6?printf("NO"):printf("YES"); } return 0; }