九度题目1363:欢乐斗地主

简介:
欢乐斗地主
时间限制:1 秒内存限制:32 兆特殊判题:否提交:727解决:163
题目描述:
         
    如果大家玩过欢乐斗地主这个游戏,就一定知道有一个具有“提示”功能的按钮。如果你不知道你现在手
里的牌有没有比上家大的牌,并且你也懒得去一张一张地看你手中的牌。这时候你就可以点“提示”按钮,系
统会告诉你是否有这样的牌。
         如果你是一个喜欢挑战的人,你就一定会想,能不能写一个程序,让它实现欢乐斗地主中的“提示”
按钮的功能。
         现在,我们把“提示”按钮所具有的功能简化,它只需要找出在上家出的牌是“三带一对”的情况下
你手中的牌是否比上家的牌大。


输入:
         每组测试数据可能有多组输入,对于每一组输入,
         输入的第一行包括一个整数N(1=N=18),代表你手中现在还剩下的扑克牌的张数。
         接下来的一行包括N个数字(1-13,分别代表扑克牌中的A-K),给你的这N个数字是无序的。
         接下来的一行包括五个数字,前三个数字是相同的,后两个数字是相同的,代表上家出的“三带一对
”。
输出:
         如果你手中的牌有比上家的“三带一对”大的,输出这样的牌,输出的格式与输入中的第三行相同,
即五个数字:前三个是一样的,后两个是一样的,代表你手中的“三带一对”。如果你手中没有比上家的“三

带一对”大的牌,请输出“My God”。


样例输入:
8
1 6 4 8 4 7 6 4
3 3 3 9 9
8
1 6 4 8 4 7 6 4
8 8 8 2 2

样例输出:
4 4 4 6 6
My God

提示:
         1.“三带一对”:三张同样数字的牌+两张同样数字的牌,此时这五张牌可以同时出。“三带一对”
比大小的规则如下——只需要比较三张同样数字的牌的数字的大小,而不需要考虑两张同样数字的牌的数字的
大小。比如:“三个5带两个3”,比“三个4带两个8”要大。
         2.大家都知道,在扑克牌中A和2要比3-K都要大,请大家在程序中进行处理。
3.如果你手中的牌有多种出法能够比上家的“三带一对”大,你需要选择“三带一对”中三张相同的牌数字较
小的那种出法。比如说,如果上家出的牌是3 3 3 4 4,而你现在手中有6 6 6 7 7 7这6张牌,你需要出的牌是
6 6 6 7 7,而不是7 7 7 6 6,如果三带最小的有多个,则需要输出一对值最小的那个结果。

4.你可以放心,我们发的牌以及出的牌中不会出现大小王。



AC代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[20],flag[20];
int b[10];
int main()
{
    int i,j,n,x,y,f1,f2;
    while(scanf("%d",&n)!=EOF)
    {
       memset(flag,0,sizeof(flag));
       memset(a,0,sizeof(a));
       for(i=0;i<n;i++)
       {
          scanf("%d",&a[i]);
          if(a[i]==1)
          a[i]=14;
          
          if(a[i]==2)
          a[i]=15;
       }
       sort(a,a+n);

       for(i=0;i<5;i++)
       {
          scanf("%d",&b[i]);
          if(b[i]==1)
          b[i]=14;
          
          if(b[i]==2)
          b[i]=15;
       }
       x=b[0],y=b[4];
       f1=0;f2=0;
       for(i=0;i<n;i++)
       {
          if(a[i]>x&&i+2<n)
          {
             if(a[i]==a[i+1]&&a[i+1]==a[i+2]&&a[i+2]>x)
             {
                f1=a[i];
                flag[i]=1;
                flag[i+1]=1;
                flag[i+2]=1;
                break;
             }
          }
       }
       
       for(i=0;i<n;i++)
       {
          if(flag[i]==0&&i+1<n)
          {
             if(a[i]==a[i+1])
             {
                f2=a[i];
                break;
             }
          }
       }
       
       if(f1==14) f1=1;
       if(f1==15) f1=2;
       if(f2==14) f2=1;
       if(f2==15) f2=2;
       
       if(f1!=0&&f2!=0)
       printf("%d %d %d %d %d\n",f1,f1,f1,f2,f2);
       else
       printf("My God\n");
    }
    return 0;
}

相关文章
|
9月前
|
Cloud Native
【刷题日记】473. 火柴拼正方形
本次刷题日记的第 52 篇,力扣题为:473. 火柴拼正方形,中等
|
11月前
|
算法 C++ Python
【每日算法Day 87】今天我脱单了,所以大家不用做题了!
【每日算法Day 87】今天我脱单了,所以大家不用做题了!
|
11月前
|
定位技术
国庆七天乐,要猛! ——经典迷宫问题
国庆七天乐,要猛! ——经典迷宫问题
60 0
|
11月前
|
机器学习/深度学习 C++
蓝桥杯C++小朋友崇拜圈
蓝桥杯C++小朋友崇拜圈
71 0
|
11月前
【洛谷】独自一人听歌写题
【洛谷】独自一人听歌写题
52 0
|
存储 人工智能 JavaScript
【寒假每日一题】AcWing 4510. 寻宝!大冒险!
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
101 0
周赛313赛后做题分析及总结
本文为力扣周赛313赛后做题分析及总结。
72 0
|
机器学习/深度学习 安全
|
定位技术 C++

相关实验场景

更多