输入有多组数据。 每组输入两个字符串(字符串大小不超过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;
}