题目描述

炸金花是一个风靡全球的扑克游戏,不少人因为这个游戏发了家,而更多的人则输得倾家荡产。为了帮助赌徒们戒掉它,现在决定派你去写一个程序,帮助赌徒们更好的认识这个游戏。

炸金花在这里被简化成这样一个情况:每一个人都会得到随机派发的三张牌(每张牌的点数为整数区间[1,9]中的某个数,点数相同的牌最多只有4张),然后比较大小。

比较大小的方式是这样的:

① 豹子:即三张点数一样的牌,若双方都为豹子,则点数大者为大,豹子大于任何其他情况;

② 顺子:即三张点数连续递增的牌,比如(4,5,6),(1,2,3),若双方都是顺子,点数大者为大,顺子大于对子和单张;

③ 对子:即两张点数一样的牌带一张单牌,比如(1,1,4),(2,2,5),若双方都是对子,则成对的牌点数大者为大,如果那一对也一样,则比较单张的大小,对子大于单张;

④ 单张:即三张牌不是上述的三种。单张的比较大小方式是,先比较点数最大的,再比较点数第二大的,再比较点数第三大的。

需要注意的是一个特殊情况,那就是,2,3,5比大部分牌都小,但是比豹子大。

你的任务是,对于对手的给定的一种情况,告诉赌徒,有多少种情况可以赢对方。(4,5,6及5,4,6这样算一种情况)

输入

有多组输入数据,第一行为一个数字T,代表有T组输入数据 (0<T≤1000)。

接下来为T组数据,每组数据占一行,为3个整数,表示对手的拿牌情况。

输出

对于每组数据,在一行上输出一个整数,表示赢得对手的情况数。

--正文

直接一种种情况考虑过去就好

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std; int card[];
int danzhang[] = {,,,,,,,,,};
long long ans = ; bool cmp(int a,int b){
return (a <= b);
} void Solve(){
ans = ;
sort(card+,card+,cmp);
if (card[] == card[]) {
if (card[] == card[]){ // baozi
ans = ( - card[]) + ;
}
else { //duizi
int tmp1 = (-card[]) + *(-card[]); // duizi bi ta da
int tmp2 = ; // shunzi
int tmp3 = ; // baozi
ans = tmp1 + tmp2 + tmp3;
}
}
else {
if (card[] == card[]){ //duizi
int tmp1 = (-card[]) + *(-card[]); // tongshang
int tmp2 = ;
int tmp3 = ;
ans = tmp1 + tmp2 + tmp3;
}
else {
if (card[] == card[] + && card[] == card[] + ){ //shunzi
int tmp1 = - card[]; // shunzi
int tmp2 = ;
ans = tmp1 + tmp2;
}
else { //danzhang
int tmp1 = ,i;
if (card[] == card[] - ){
tmp1 = card[] - card[] - ;
}
else
tmp1 = card[] - card[] - ;
for (i=card[]+;i<card[]-;i++){
tmp1 += i - ;
}
if (card[] < card[] - )
tmp1 += card[] - ;
for (i=card[]+;i<=;i++){
tmp1 += danzhang[i];
}
int tmp2 = ; // duizi
int tmp3 = ; // shunzi
int tmp4 = ; // baozi
ans = tmp1 + tmp2 + tmp3 + tmp4;
}
}
}
} int main(){
int time,T;
scanf("%d",&T); for (time=;time<=T;time++){
scanf("%d %d %d",&card[],&card[],&card[]);
//printf("%d %d %d",card[0],card[1],card[2]);
Solve();
printf("%lld\n",ans);
} return ;
}

XidianOJ 1044 炸金花的更多相关文章

  1. 200行代码搞定炸金花游戏(PHP版)

    <?php/* * 游戏名称:炸金花(又名三张牌.扎金花) * 开发时间:2009.1.14 * 编 程:多菜鸟 * 来 源:http://blog.csdn.net/kingerq/archi ...

  2. 炸金花的JS实现从0开始之 -------现在什么都不会(1)

    新年结束了.回想起来唯一留下乐趣的就是在家和朋友玩玩炸金花. 遂有此文. 对不起,我这时候还没有思路. 让我捋一捋. ... ... 捋一捋啊... ... 好了.今天先这样吧: (1)先整理出所有的 ...

  3. 炸金花游戏(4)--炸金花AI基准测试评估

    前言: 本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花 ...

  4. 炸金花游戏(3)--基于EV(期望收益)的简单AI模型

    前言: 炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章: 德州扑克AI--Prog ...

  5. 品鉴同事发来的炸金花的PHP程序代码

    今天同事发来了一个炸金花的PHP程序,这个代码实现了两个人通过各自的三张牌进行权重计算,得到分数进行比较得到谁的牌大,我觉得里面还有一些问题,代码如下: <?php /** 每张牌的分值为一个2 ...

  6. 自己写的微信小程序炸金花简单版

    app.json: { "pages":[ "pages/index/index" ], "window":{ "navigati ...

  7. akoj-1222-炸金花

    炸金花 Time Limit:1000MS  Memory Limit:65536K Total Submit:40 Accepted:19 Description 炸金花是一个风靡全球的扑克游戏,喜 ...

  8. IOS本地化。

    1,项目名本地化 点击项目,蓝色图标->info 最下面+号,添加chinese本地化. Supporting Files->infoPlist.strings 下会有两个文件,有一个是设 ...

  9. 【Android病毒分析报告】 - ZxtdPay 吸费恶魔

    本文章由Jack_Jia编写,转载请注明出处.  文章链接:http://blog.csdn.net/jiazhijun/article/details/11581543 作者:Jack_Jia    ...

随机推荐

  1. .NET的Cookie相关操作

    using System; using System.Collections.Generic; using System.Text; using System.Web; namespace Comm ...

  2. [Linux] - centos使用mount + nfs 远程共享存储

    服务端安装nfs 1.使用yum安装nfs yum install nfs-utils nfs-utils-lib -y 如果安装过程出现这样的错误: 得先安装lvm2 yum install -y ...

  3. STM32是否可以跑linux

    操作系统有两种 用MMU的 和 不用MMU的用MMU的是Windows MacOS Linux Android不用MMU的是FreeRTOS VxWorks ucOS... CPU有两种 带MMU的 ...

  4. lumen Response

    1.基本响应 所有路由和控制器都会返回某种被发送到用户浏览器的响应,Lumen提供了多种不同的方式来返回响应,最基本的响应就是从路由或控制器返回一个简单的字符串: $app->get('/', ...

  5. Run Loop详解

    Run loops是线程的基础架构部分.一个run loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件.使用run loop的目的是使你的线程在有工作的时候工作,没有的时候休眠. Run ...

  6. Blink Without Delay: 不使用 delay() 函数而使 LED 闪烁

    不使用 delay() 函数而使 LED 闪烁 有些时候你需要同时做两件事.例如,你可能希望在读取按键按下状态同时让LED闪烁. 在这种情况下,你不能使用 delay(),因为Arduino程序会在d ...

  7. SQL Server安全概念简析

    I. 登录名与用户名 登录名: 访问数据库服务器的账户.登录名可以登录到服务器,但不能直接访问数据库内容.数据库连接串中的用户名应配置为登录名.每个登录名的定义存放在master数据库的syslogi ...

  8. Linux学习笔记之——安装虚拟机后,如何启用网卡

    版本:CentOS-6.5-i386-minimal 虚拟机:vmware 11.1.2   安装完之后是看不到网卡信息的,如下:         我们编辑网卡etho的配置信息:         将 ...

  9. java.lang.OutOfMemoryError: Java heap space

    java.lang.OutOfMemoryError: Java heap space 原因:内存溢出,内存一直申请一直占用,无法回收 解决方法:定时重启下服务,

  10. css3动画(@keyframes和animation的用法)

    animation基本用法是: animation: name keeping-time animate-function delay times iteration final; 第一个参数:nam ...