- 题目描述:
-
牌只有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 <stdio.h> #include <string.h> int main(void) { int i; char a[101], b[6]; int c[10]; int res; while (scanf("%s", a) != EOF) { for (i=0; i<10; i++) c[i] = 0; for(i=0; a[i]; i++) c[a[i]-48] ++; scanf("%s", b); int type = strlen(b); res = 0; if (type <= 4) { for (i=b[0]-48+1; i<10; i++) { if (c[i] >= type) { res = 1; break; } } } else { if (b[0] != '5') { for (i=b[0]-48+1; i<=5; i++) { if (c[i]>0 && c[i+1]>0 && c[i+2]>0 && c[i+3]>0 && c[i+4]>0) { res = 1; break; } } } } if (res == 1) printf("YES "); else printf("NO "); } return 0; } /************************************************************** Problem: 1175 User: liangrx06 Language: C Result: Accepted Time:10 ms Memory:912 kb ****************************************************************/