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

原创 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;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

斗地主AI算法——第十三章の主动出牌(2)

上一章我们已经搭好了出牌算法的基本框架,本章主要实现优先处理的三带、飞机等牌型。 首先定义一些基本变量: //暂存最佳的价值 HandCardValue BestHandCardValue; B...
  • sm9sun
  • sm9sun
  • 2017年04月27日 16:26
  • 1680

cocos2dx《单机斗地主》源码解剖之六 玩家(人)的出牌(2)

下面分析//牌的张数大于等于5张的类型判断,原代码如下: int GameScene::PaiDuanPaiXing(){ //对出的牌进行排序 PlayerOutPaiXu(...

我是掼蛋王之 -- 选牌与出牌

选牌. 选牌结束,检查要出的牌,添加到出牌数组中. void SeatUnit::checkSelCardEnd() { CardGroup::MODE mode = _pCards->ge...

自出牌拱猪游戏源码

  • 2016年10月27日 23:21
  • 5.77MB
  • 下载

斗地主AI算法——第十一章の被动出牌(5)

本章是被动出牌的最后一章,截止目前,我们已经解决了大部分牌型。只剩下飞机和炸弹了。 飞机无疑是最复杂的类型,他等于顺子和三带的结合体,但又增加了很多难度。 根据上一章的算法,我们可以大概想到,若是...
  • sm9sun
  • sm9sun
  • 2017年04月27日 15:12
  • 1878

斗地主AI算法——第十二章の主动出牌(1)

本章开始,我们介绍主动出牌的算法,和被动出牌类似,我们第一步把主要架子搭起来。 首先清空出牌序列 clsHandCardData.ClearPutCardList(); 主动出牌的策略按照优先...
  • sm9sun
  • sm9sun
  • 2017年04月27日 16:04
  • 1891

斗地主游戏AI出牌

斗地主游戏的初期版本目前为止大概已经完成的一半了... 还剩下最麻烦的部分(AI)没写,写这篇博文主要是想理一下基本的思路,然后把这一部分也搞完. 先上一个目前的进度截图纪念一下好了 经过较长...
  • Mr_ksco
  • Mr_ksco
  • 2014年01月21日 18:04
  • 3120

悲剧的出牌 模拟题

悲剧的队内赛,我还是太弱了= = 倒数第二的好成绩啊~~ 悲剧的代码= = 300+啊~~~ #include #include #include #include #includ...

Qt斗地主界面的发牌,抢地主,出牌界面的实现。

无聊的时候挺喜欢玩斗地主,在学完Qt之后我想做一个斗地主,在完成了界面和逻辑之后最终碰到了AI出牌算法这个问题。对于这种比较难得问题,小生束手难测,仅仅完成了界面。界面逻辑已经完成的差不多了。现将其中...
  • ZQL2288
  • ZQL2288
  • 2017年03月13日 20:44
  • 855

斗地主智能(AI)出牌算法

去年有想写个斗地主的小游戏,自己玩玩。找了很多资料,后来好不容易在网上找到了一个AI算法。转过的的时候是贴在自己电脑的TXT文本上,再次感谢下原作者。现在借花献佛发给你参考下。    我以前写过一个斗...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:出牌,用程序判断手中的牌是否能够压过对方出牌
举报原因:
原因补充:

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