XidianOJ 1044 炸金花
题目描述
炸金花是一个风靡全球的扑克游戏,不少人因为这个游戏发了家,而更多的人则输得倾家荡产。为了帮助赌徒们戒掉它,现在决定派你去写一个程序,帮助赌徒们更好的认识这个游戏。
炸金花在这里被简化成这样一个情况:每一个人都会得到随机派发的三张牌(每张牌的点数为整数区间[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 炸金花的更多相关文章
- 200行代码搞定炸金花游戏(PHP版)
<?php/* * 游戏名称:炸金花(又名三张牌.扎金花) * 开发时间:2009.1.14 * 编 程:多菜鸟 * 来 源:http://blog.csdn.net/kingerq/archi ...
- 炸金花的JS实现从0开始之 -------现在什么都不会(1)
新年结束了.回想起来唯一留下乐趣的就是在家和朋友玩玩炸金花. 遂有此文. 对不起,我这时候还没有思路. 让我捋一捋. ... ... 捋一捋啊... ... 好了.今天先这样吧: (1)先整理出所有的 ...
- 炸金花游戏(4)--炸金花AI基准测试评估
前言: 本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花 ...
- 炸金花游戏(3)--基于EV(期望收益)的简单AI模型
前言: 炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章: 德州扑克AI--Prog ...
- 品鉴同事发来的炸金花的PHP程序代码
今天同事发来了一个炸金花的PHP程序,这个代码实现了两个人通过各自的三张牌进行权重计算,得到分数进行比较得到谁的牌大,我觉得里面还有一些问题,代码如下: <?php /** 每张牌的分值为一个2 ...
- 自己写的微信小程序炸金花简单版
app.json: { "pages":[ "pages/index/index" ], "window":{ "navigati ...
- akoj-1222-炸金花
炸金花 Time Limit:1000MS Memory Limit:65536K Total Submit:40 Accepted:19 Description 炸金花是一个风靡全球的扑克游戏,喜 ...
- IOS本地化。
1,项目名本地化 点击项目,蓝色图标->info 最下面+号,添加chinese本地化. Supporting Files->infoPlist.strings 下会有两个文件,有一个是设 ...
- 【Android病毒分析报告】 - ZxtdPay 吸费恶魔
本文章由Jack_Jia编写,转载请注明出处. 文章链接:http://blog.csdn.net/jiazhijun/article/details/11581543 作者:Jack_Jia ...
随机推荐
- OpenStack部署工具总结
目前感觉比较简单直观的部署工具有RDO.devstack.Fuel等: 1. RDO https://openstack.redhat.com/Quickstart REDHAT出品,支持Redhat ...
- 重装系统后,delphi7打开报错
delphi7运行不正常的提示unable to rename'c:\program files\Borland\delphi7\Bin\delphi32.$$$'to'c:\program file ...
- 01shell入门基础
01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...
- 【原】灵活运用sessionStorage或者localStorage
有时,一个app中,后台并没有提供页面中对应的信息接口,需要前端在页面跳转时把某些信息带入下一个页面,一般想到用url后带参数的方法,但是有时需要带的参数过长,就不适合用这个方法了,所以用sessio ...
- SQL语句之备份表
SELECT INTO 语句:表示从一个表中选取数据,然后把数据插入另一个表中,常用来备份一张表 1.全表结构备份: SELECT * INTO new_table_name FROM old_tab ...
- linux socket连接中 ERRNO错误
Connection refused:应该是连接的服务端没有启动或者连接端口错误,可以用如下代码测试 client端: #include <stdio.h> #include <sy ...
- jcmd、jmc介绍
一.jcmd命令使用 概述 在JDK 1.7之后,新增了一个命令行工具jcmd.它是一个多功能工具,可以用来导出堆,查看Java进程,导出线程信息,执行GC等. 使用示例 下面这个命令能够列出当前运行 ...
- 同时使用Junit4的@Parameterized参数化测试和Spring容器
转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...
- AE IRasterCursor 改变栅格图层像素值
1 public void ChangePixelValue(double xMax, double xMin, double yMax, double yMin,double[,] PixelCha ...
- 如何让CCLayer创造的地图,左右滑动不出现黑边
在都是scale为1的情况下,效果图如下: , 绿色的是Screen,它的大小和坐标不变,可以理解为CCScene,下面两个就是用CCLayer的地图,有2个Layer,深颜色的就是和Scrren一样 ...