/* 时间:2014.2.10 目的;题目1175:打牌http://ac.jobdu.com/problem.php?pid=1175 */ #include <stdio.h> #include <string.h> int main() { char str[101]; int a[10], i, len, t, f, flag; while(~scanf("%s", str)) { flag = f = t = 0; for(i = 0;i < 10;i++)//清零 a[i] = 0; for(i = 0;str[i];i++)//统计1,2,3,4,5,6,7,8,9出现的数目 a[(str[i]-‘0‘)]++; for(i = 1;i < 6;i++)//求出连续最大的五个数的首数字,如34567,则t=3 if(a[i]&&a[i+1]&&a[i+2]&&a[i+3]&&a[i+4]) t = i; scanf("%s", str); len = strlen(str); (len == 5)&&(f=1)&&((str[0]-‘0‘)<t)&&(flag=1);//f为判断是否len==5,作为for的条件,flag作为输出的条件 for(i = 1;f==0 && i < 10;i++)//这是判断str长度<=4的是否出牌判断 if(len <= a[i] && i > (str[0] - ‘0‘)){//注意长度是<=,不是=, flag = 1; break; } flag?printf("YES\n"):printf("NO\n");//输出 } return 0; } /* ----------------- 12233445566677 思路:1. 我是将长度为5与(1-4)长度的情况分开讨论 34567 2.模拟 NO ----------------- */
原文:http://blog.csdn.net/z_x_b5/article/details/19037509