题意:就是给了13张牌。问增加哪些牌可以胡牌。m是数字,s是条,p是筒,c是数字
胡牌有以下几种情况:
1、一个对子 +  4组 3个相同的牌或者顺子。  只有m、s、p是可以构成顺子的。东西南北这样的牌没有顺子。
2、7个不同的对子。
3、1m,9m,1p,9p,1s,9s,1c,2c,3c,4c,5c,6c,7c.  这13种牌每种都有,而且仅有这13种牌。肯定是有一种2张。其他的1张。
 
模拟即可,第一个对子的情况需要枚举
 
很麻烦的模拟,但是貌似稳银的很需要这题,所以这种难度必须要弄懂,加油!!!
 #include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int cnt[];
bool judge4X3()
{
int ret=;
int tmp[];
for(int i=;i<;i++)tmp[i]=cnt[i]; for(int i=;i<=;i+=)
for(int j=;j<;j++)
{
if(tmp[i+j]>=) //相同的
{
tmp[i+j]-=;
ret++;
}
while(j+< && tmp[i+j] && tmp[i+j+] &&tmp[i+j+]) //不同的
{
tmp[i+j]--;
tmp[i+j+]--;
tmp[i+j+]--;
ret++;
}
}
for(int j=;j<;j++) //东西南北
{
if(tmp[+j]>=)
{
tmp[+j]-=;
ret++;
}
}
if(ret==)return true;
return false;
}
bool judge1() //判断对子和4个三连的情况
{
for(int i=;i<;i++)
{
if(cnt[i]>=)
{
cnt[i]-=;//枚举对子
if(judge4X3())
{
cnt[i]+=;
return true;
}
cnt[i]+=;
}
}
return false;
}
bool judge2() //判断全是对子的情况
{
for(int i=;i<;i++)
{
if(cnt[i]!= && cnt[i]!=)
return false;
}
return true;
}
bool judge3() //判断全部不相同的情况
{
for(int j=;j<;j++)
if(cnt[j+]==)
return false;
for(int i=;i<=;i+=)
{
if(cnt[i]== || cnt[i+]==)return false;
for(int j=;j<;j++) //不能再出现其他的牌
if(cnt[i+j]!=)
return false;
}
return true;
}
bool judge()
{
if(judge1() || judge2() || judge3())return true;
return false;
}
int main()
{
int T;
char str[];
scanf("%d",&T);
int ans[],tol;
while(T--)
{
memset(cnt,,sizeof(cnt));
for(int i=;i<;i++)
{
scanf("%s",&str);
int t=str[]-'';
if(str[]=='m')t+=;
else if(str[]=='s')t+=;
else if(str[]=='p')t+=;
else t+=;
cnt[t]++;
} //将麻将排个序
tol=;
for(int i=;i<;i++)
{
cnt[i]++;
if(cnt[i]<= && judge()) //麻将个数不能大于4,
ans[tol++]=i; //符合条件
cnt[i]--;
}
if(tol==)printf("Nooten\n");
else
{
printf("%d",tol);
for(int i=;i<tol;i++)
{
printf(" %d",(ans[i]%)+);
if(ans[i]/==)printf("m");
else if(ans[i]/==)printf("s");
else if(ans[i]/==)printf("p");
else printf("c");
}
printf("\n");
}
}
return ;
}

hdu 4431 第37届ACM/ICPC 天津赛区现场赛A题 枚举的更多相关文章

  1. hdu 4438 第37届ACM/ICPC 天津赛区现场赛H题

    题意:Alice和Bob两个人去打猎,有两种(只)猎物老虎和狼: 杀死老虎得分x,狼得分y: 如果两个人都选择同样的猎物,则Alice得分的概率是p,则Bob得分的概率是(1-p): 但是Alice事 ...

  2. Substrings 第37届ACM/ICPC 杭州赛区现场赛C题(hdu 4455)

    http://acm.hdu.edu.cn/showproblem.php?pid=4455 https://icpcarchive.ecs.baylor.edu/index.php?option=c ...

  3. zoj 3659 第37届ACM/ICPC 长春赛区现场赛E题 (并查集)

    题意:给出一棵树,找出一个点,求出所有点到这个点的权值和最大,权值为路径上所有边权的最小值. 用神奇的并查集,把路按照权值从大到小排序,然后用类似Kruskal的方法不断的加入边. 对于要加入的一条路 ...

  4. hdu 4432 第37届ACM/ICPC天津现场赛B题

    题目大意就是找出n的约数,然后把约数在m进制下展开,各个数位的每一位平方求和,然后按m进制输出. 模拟即可 #include<cstdio> #include<iostream> ...

  5. hdu 4435 第37届ACM/ICPC天津现场赛E题

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题目:给出N个城市,从1开始需要遍历所有点,选择一 ...

  6. hdu 4461 第37届ACM/ICPC杭州赛区I题

    题意:给两个人一些棋子,每个棋子有其对应的power,若b没有或者c没有,或者二者都没有,那么他的total power就会减1,total power最少是1,求最后谁能赢 如果b或c出现的话,fl ...

  7. hdu 4460 第37届ACM/ICPC杭州赛区H题 STL+bfs

    题意:一些小伙伴之间有朋友关系,比如a和b是朋友,b和c是朋友,a和c不是朋友,则a和c之间存在朋友链,且大小为2,给出一些关系,求出这些关系中最大的链是多少? 求最短路的最大距离 #include& ...

  8. hdu 4462 第37届ACM/ICPC 杭州赛区 J题

    题意:有一块n*n的田,田上有一些点可以放置稻草人,再给出一些稻草人,每个稻草人有其覆盖的距离ri,距离为曼哈顿距离,求要覆盖到所有的格子最少需要放置几个稻草人 由于稻草人数量很少,所以状态压缩枚举, ...

  9. hdu 4463 第37届ACM/ICPC杭州赛区K题 最小生成树

    题意:给坐标系上的一些点,其中有两个点已经连了一条边,求最小生成树的值 将已连接的两点权值置为0,这样一定能加入最小生成树里 最后的结果加上这两点的距离即为所求 #include<cstdio& ...

随机推荐

  1. HDU 3595 every-sg模型

    多个子游戏同时进行,每个子游戏给出两个数a,b,可以将大的数减去k倍小的数,不能操作者输. 策略就是对于一个必胜的游戏要使得步数更长,对于一个必败的游戏使得步数最短. 以下都来自贾志豪的论文.. 对于 ...

  2. eclipse 下编译c++

    下载jdk 下载eclipse for c++ 版本 下载mingw ps:show project types... 这个选项不要打钩

  3. Kafka 温故(四):Kafka的安装

    Step 1: 下载Kafka > tar -xzf kafka_2.9.2-0.8.1.1.tgz> cd kafka_2.9.2-0.8.1.1 Step 2: 启动服务Kafka用到 ...

  4. javascript完美拖拽的实现

    直接上代码: HTML代码: <!DOCTYPE HTML> <html lang="en-US"> <head> <meta chars ...

  5. argunlar 1.0.0 【hello,world】

    <!DOCTYPE html><html lang="en" ng-app><head>    <meta charset="U ...

  6. dialog 菜单实例

    dislog 菜单实例 while : do clear menu=`dialog --title system custom` [ $? -eq ] && echo "$m ...

  7. [CEOI2015 Day2]世界冰球锦标赛 (双向搜索)

    题目描述 [CEOI2015 Day2]世界冰球锦标赛译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.Bobek ...

  8. 爬虫笔记之刷小怪练级:yymp3爬虫(音乐类爬虫)

    一.目标 爬取http://www.yymp3.com网站歌曲相关信息,包括歌曲名字.作者相关信息.歌曲的音频数据.歌曲的歌词数据. 二.分析 2.1 歌曲信息.歌曲音频数据下载地址的获取 随便打开一 ...

  9. MapReduce--shuffle

    一.Shuffle简介 Shuffle的正常意思是洗牌或弄乱,shuffle的大致范围就是把map task的输出结果有效的传送到Reduce端.也可以这样理解,shuffle描述着数据从map ta ...

  10. 使用badblocks命令检测、修复硬盘坏道(待验证)

    今天我的新硬盘到了.暂时没想好怎么用它.可以把它装入光驱位硬盘架给G430用,也可以把它当成移动硬盘来用. 想起以前记录过一个badblocks的用法,用来检查坏道,这里再贴一遍备用. ####### ...