出牌,用程序判断手中的牌是否能够压过对方出牌

原创 2015年07月08日 20:58:57


//规则:出牌牌型有5种  
//牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。
//[1]一张 如4 则5...9可压过
//[2]两张 如44 则55,66,77,...,99可压过
//[3]三张 如444 规则如[2]
//[4]四张 如4444 规则如[2]
//[5]五张 牌型只有12345 23456 34567 45678 56789五个,后面的比前面的均大。
//输入: 输入有多组数据。
//每组输入两个字符串(字符输出: 压过输出YES 否则NO。
//串大小不超过100)a,b。a字符串代表手中牌,b字符串代表处的牌。
//样例输入: 12233445566677
//33
//123344556667799
//888
//样例输出: YES
//NO
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int cmp(char a,char b)
{
 return a<b;
}
void main()
{
 char s1[100];
 char s2[100];
 gets(s1);
 gets(s2);
 int len1=strlen(s1);
 int len=strlen(s2);
 sort(s1,s1+len1,cmp);
 
 int i=0;
 char *a="YES";
 char *b="NO";
 char *c;
 if(len==1)
 {
  while(s1[i]!='\0')
  {
   if(s1[i]>s2[0])
   {
    c=a;
    break;
   }
   else
    i++;
  }
  if(i==len)
   c=b;
 }

 if(len==2)
 {
  while(s1[i]!='\0')
  {
   if(len-i<2)
   {
    c=b;
    break;
   }
   else
   {
    if(s1[i]>s2[0]&&s1[i+1]==s1[i])
    {
     c=a;
        break;
    }
    else
        i+=2;
   }
  }
  if(i==len)
   c=b;
 }
 if(len==3)
 {
  while(s1[i]!='\0')
  {
   if(len-i<3)
   {
    c=b;
    break;
   }
   else
   {

    if(s1[i]>s2[0]&&s1[i+1]==s1[i]&&s1[i+2]==s1[i])
    {
     c=a;
        break;
    }
       else
        i+=4;
   }
  }
  if(i==len)
   c=b;
 }

 if(len==4)
 {
  while(s1[i]!='\0')
  {
   if(len-i<4)
   {
    c=b;
    break;
   }
   else
   {
    if(s1[i]>s2[0]&&len-i>=4&&s1[i+1]==s1[i]&&s1[i+2]==s1[i]&&s1[i+3]==s1[i])
    {
        c=a;
        break;
       }
    else
        i+=4;
   }
    }
  if(i==len)
   c=b;
 }

 if(len==5)
 {
  while(s1[i]!='\0')
  {
   if(len-i<5)
   {
    c=b;
    break;
   }
   else
   {
    if(s1[i]>s2[0]&&len-i>=5&&s1[i+1]-'1'==s1[i]&&s1[i+2]-'1'==s1[i+1]&&s1[i+3]-'1'==s1[i+2]&&s1[i+4]-'1'==s1[i+3])
    {
        c=a;
        break;
    }
       else
        i++;
   }
  }
  if(i==len)
   c=b;
 }
 cout<<c<<endl;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huhuichun/article/details/46808495

开发具有Windows任务栏布告区图标的应用程序

   许多应用程序,如输入法管理器、杀毒软件等均在任务栏布告区中放置一个有自已特色的图标,该图标让用户知道有一个后台程序正在运行,同时也提供了一种修改系统设置的快捷方法,本文将以C++ Builder...
  • yemagxy
  • yemagxy
  • 2001-05-04 22:20:00
  • 730

九度OJ 题目1175:打牌

题目1175:打牌 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2965 解决:479 题目描述: 牌只有1到9,手里拿着已经排...
  • SJF0115
  • SJF0115
  • 2013-02-12 10:52:42
  • 3182

2010北邮复试网研上机题——打牌

起因: 最近利用空余时间也练习了将近一个月的acm,重新回来看这篇当时的博客,发现代码错误百出,在九度OJ上重新ac了这道题,上代码给大家看 题目要求: 题目描述: 牌只有1到...
  • zinss26914
  • zinss26914
  • 2011-12-15 20:57:54
  • 1829

华为机试——扑克牌

华为机试——扑克牌 一副牌中发五张扑克牌给你,让你判断数字的组成:有一下几种情况:1.四条:即四章一样数值的牌(牌均不论花色)2.三条带一对3.三条带两张不同数值的牌4.两对5.顺子 包括10,J,Q...
  • u012260238
  • u012260238
  • 2015-09-29 11:36:39
  • 365

九度OJ&北邮机试题题解(北邮2010网院)

题目一、九度OJ-1173:查找(水题随便搞) ac.jobdu.com/problem.php?pid=1173 题目描述: 输入数组长度 n 输入数组      a[1...n...
  • u012435889
  • u012435889
  • 2015-01-12 19:36:40
  • 1322

九度OJ 1175:打牌 (模式匹配)

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8156 解决:1560 题目描述: 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判...
  • thudaliangrx
  • thudaliangrx
  • 2015-10-26 10:50:47
  • 286

1049: 打牌

1049: 打牌 时间限制: 1 Sec  内存限制: 128 MB 提交: 215  解决: 69 [提交][状态][讨论版] 题目描述 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b...
  • zhsy28
  • zhsy28
  • 2016-08-11 22:07:23
  • 656

九度题目1175:打牌

http://ac.jobdu.com/problem.php?pid=1175 2010年北京邮电大学网院研究生机试真题 #include #include char a[105],b...
  • yhhhyfyy
  • yhhhyfyy
  • 2013-03-08 23:07:56
  • 575

题目1175:打牌

题目描述: 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。  规则:出牌牌型有5种    [1]一张 如4 则5...9可压过  [2]两张 如...
  • ych19871020
  • ych19871020
  • 2013-09-24 21:31:52
  • 567

九度oj 题目1175:打牌--string类的find方法

链接 http://ac.jobdu.com/problem.php?pid=1175 题目描述: 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是...
  • hitwlh
  • hitwlh
  • 2015-07-05 23:07:22
  • 434
收藏助手
不良信息举报
您举报文章:出牌,用程序判断手中的牌是否能够压过对方出牌
举报原因:
原因补充:

(最多只允许输入30个字)