#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int max_score;
void func(vector<int>v, int score) {
max_score = max(max_score, score);
int flag = 0;
for (int i = 2; i < 15; i++) {
if (v[i] >= 4) {//v[i]中存的是数字为i的牌的数量,比如v[13]=4就表示k有4张
v[i] -= 4; //把这四张拿出来
func(v, score + 5);
v[i] += 4;//回溯
}
}//选取有四张的牌
for (int i = 2; i < 15; i++) {
if (v[i] >= 3) {
v[i] -= 3;
func(v, score + 4);
v[i] += 3;//回溯
}
}//选取有三张的牌
for(int i=2;i<11;i++){
if (v[i] >= 1 && v[i + 1] >= 1 && v[i + 2] >= 1 && v[i + 3] >= 1 && v[i + 4] >= 1){
v[i] -= 1;
v[i+1] -= 1;
v[i+2] -= 1;
v[i+3] -= 1;
v[i+4] -= 1;
func(v, score + 3);
v[i] += 1;//回溯
v[i + 1] += 1;
v[i + 2] += 1;
v[i + 3] += 1;
v[i + 4] += 1;
}
}//选取顺子
for (int i = 2; i < 15; i++) {
if (v[i] >= 2) {
v[i] -= 2;
func(v, score + 2);
v[i] += 2;//回溯
}
}//取对子
}
int main() {
vector<int>v(15, 0);
int n;
while (cin >> n) {
for (int i = 0; i < n; i++) {
string temp;
cin >> temp;
if (temp.size() == 3) {
v[10]++;
}
else if (temp[0] == 'J') {//大小王存在0和1
if (temp[1] == '1') {
v[0]++;
}
else {
v[1]++;
}
}
else {
int pos = temp[1] - '0';
v[pos]++;
}
}
func(v, 0);
if (v[0] == 1 && v[1] == 1) { //找大小王
max_score += 5;
}
cout << max_score << endl;
}
}
扑克牌权重
原创
©著作权归作者所有:来自51CTO博客作者小魏同学yyds的原创作品,请联系作者获取转载授权,否则将追究法律责任
扑克牌权重
https://blog.51cto.com/u_15456066/4802752
扑克牌权重
https://blog.51cto.com/u_15456066/4802752
上一篇:算法笔记:树-二叉树(二叉链表)
下一篇:神奇的椅子
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【图像去噪】基于matlab形态学权重自适应图像去噪【含Matlab源码 086期】
数字图像在进行数学形态滤波去噪时,根据噪
matlab 自动驾驶 图像去噪 数字图像 偏微分方程 -
Nginx-从零开始使用nginx实现反向代理及负载均衡
块需要 zlib 库 ://.zlib.net/ (上不去了。。。可以从别的地方下载 ,比如 https:/...
centos安装nginx nginx反向代理 nginx负载均衡 keepalived高可用 nginx -
百度或者Google---SEO优化
google和百度的技术差别:1.百度还认不清哪个是原创的2.google蜘蛛不够百度快4.google排名结果随时变化流量
曾祥展 百度或者Google SEO优化 学无止境 搜索引擎