19168 yaoyao的金花预测
时间限制:1000MS 代码长度限制:10KB
提交次数:66 通过次数:6
题型: 编程题 语言: 不限定
Description
yaoyao和lola在学校中起了争执,他们想通过炸金花来决定谁胜谁负。 现在有两幅手牌,分别给yaoyao和lola发3张牌。 炸金花的牌型从大到小如下: 炸弹:3张牌是一样的 如:666 顺金:花色相同并且是顺子 金花:花色相同 顺子:3张牌的是顺子,如345,234,789,JQK,QKA,A,2,3。 对子:有一对相同的,如:223,334 单牌:没有以上牌型
yaoyao开了天眼,能找到lola的牌是什么,yaoyao想知道牌型比lola大的组合还有多少种; 注意:题目要求的是牌型大于lola。
输入格式
输入3行代表lola的牌,每一行有整数x,k,x代表花色[1,4],k代表数值大小[2,14], 11代表J,12代表Q,13代表K,14代表A.
输出格式
输出整数,代表牌型比lola大的组合还有多少种
输入样例
样例1: 4 14 3 14 2 14 样例2: 2 7 3 8 4 9 样例3: 2 11 3 11 4 9
输出样例
0 1196 1916
注意题目要求的是牌型大于lola即可,因此通过排列组合计算出每种牌型有多少种,然后判断输入的牌型,将牌型大于他的组合加起来即可。
#include <iostream>
#include <algorithm>
#include <cstring>
#include <math.h>
#include <stdio.h>
#include <vector>
#include <string>
#include <map>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int a[5],b[5];
for(int i=0;i<3;i++)
cin>>a[i]>>b[i];
sort(b,b+3);
if(b[0]==b[1]&&b[1]==b[2])
cout<<0;
else if(a[0]==a[1]&&a[1]==a[2]&&((b[0]==b[1]-1&&b[1]==b[2]-1)||(b[0]==2&&b[1]==3&&b[2]==14)))
cout<<13*4;
else if(a[0]==a[1]&&a[1]==a[2])
cout<<13*4+12*4;
else if((b[0]==b[1]-1&&b[1]==b[2]-1)||(b[0]==2&&b[1]==3&&b[2]==14))
cout<<1196;
else if(b[0]==b[1]||b[1]==b[2])
cout<<1916;
else
cout<<1916+13*12*2*3*4;
return 0;
}