2010北邮复试上机网研题目C

          此题为2010年北邮复试网研院上机测试第三题,参考他人了的,至于第四题,鄙人没做出来,抱歉了哈,附上北邮旧版OnlineJudge网址:http://boj.me/onlinejudge/index.php

第三题:打牌 Problem Id: 1820Submit time: 2011-03-29 19:11:52User_id: wwp007565Memory:64K   Time:14MSLanguage:G++  Result:Accepted

牌只有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五个,后面的比前面的均大  压过输出YES 否则NO  如(括号内容为注释) 输入: 12233445566677(手中牌) 33(出牌)  输出: YES

源代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[100],str2[5];
   //    char ch;
    int i=0,j=0;
    int count[10]={0};
    int s1,s2,s3,s4,s5;
    int len,flag=1;
    int len2;
    scanf("%s",str1);
    scanf("%s",str2);
    len = strlen(str2);
    len2 = strlen(str1);
//    str1[len2] = '\0';
//    str2[len] = '\0';
    for(i=0;i<strlen(str1);i++)
    {
        if((str1[i]-'1')==0)      count[0]++;
        else if((str1[i]-'1')==1) count[1]++;
        else if((str1[i]-'1')==2) count[2]++;
        else if((str1[i]-'1')==3) count[3]++;
        else if((str1[i]-'1')==4) count[4]++;
        else if((str1[i]-'1')==5) count[5]++;
        else if((str1[i]-'1')==6)  count[6]++;
        else if((str1[i]-'1')==7)  count[7]++;
        else if((str1[i]-'1')==8)  count[8]++;
        else break;
    }

 //  for(i=0;i<9;i++)
 //       printf("%d\n",count[i]);
    if(len ==1)
    {  
        j = 0;
        s1=*str2-'1';
        for(j=s1+1;j<9;j++)
            if(count[j]>0)
            { printf("YES\n");flag =0;break;}
    }
    else if(len==2)
    {
        j = 0;
        s2=*str2-'1';
        for(j=s2+1;j<9;j++)
            if(count[j]>1)
            { printf("YES\n");flag =0;break;}
    }
    else if(len==3)
    {
        j=0;
        s3=*str2-'1';
        for(j=s3+1;j<9;j++)
            if(count[j]>2)
            { printf("YES\n");flag =0;break;}
    }
    else if(len==4)
    {
        j = 0;
        s4=*str2-'1';
        for(j=s4+1;j<9;j++)
            if(count[j]>3)
            { printf("YES\n");flag =0;break;}
    }
    else if(len==5)
    {
        s5=*str2-'1';
        for(;s5<9;s5++)
            if(count[s5+1]>0 && count[s5+2]>0 && count[s5+3]>0 && count[s5+4]>0 && count[s5+5]>0 && count[s5+5]<=9)
            {printf("YES\n");flag =0;break;}
    }

    if(flag==1)
         printf("NO\n");
    return 0;    
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值