hdu 4431 Mahjong 模拟
2015-10-07 18:08
288 查看
[code]#include<bits/stdc++.h> using namespace std; int cnt[50],t[50]; int judge1() { for(int i=0;i<34;i++) { if(cnt[i]==2||cnt[i]==0) ; else return 0; } return 1; } int judge2() { int sum=0; if(cnt[0]&&cnt[8]&&cnt[9]&&cnt[17]&&cnt[18]&&cnt[26]) { sum=cnt[0]+cnt[8]+cnt[9]+cnt[17]+cnt[18]+cnt[26]; } else return 0; for(int i=0;i<7;i++) { if(cnt[27+i]) sum+=cnt[27+i]; else return 0; } if(sum==14)return 1; else return 0; } int judge4() { int i,j,sum=0; for(i=0;i<34;i++) t[i]=cnt[i]; for(i=0;i<=18;i+=9) for(j=0;j<9;j++) { if(t[i+j]>=3) { t[i+j]-=3; sum++; } while(j+2<9&&t[i+j]&&t[i+j+1]&&t[i+j+2]) { sum++; t[i+j]--; t[i+j+1]--; t[i+j+2]--; } } for(i=0;i<7;i++) if(t[i+27]>=3) { t[i+27]-=3; sum++; } if(sum==4) return 1; else return 0; } int judge3() { int i; for(i=0;i<34;i++) { if(cnt[i]>=2) { cnt[i]-=2; if(judge4()) { cnt[i]+=2; return 1; } cnt[i]+=2; } } return 0; } int judge() { if(judge1()||judge2()||judge3()) return 1; else return 0; } int main() { int _,i,t,use[50],ans; char c; scanf("%d",&_); while(_--) { ans=0; memset(cnt,0,sizeof(cnt)); memset(use,0,sizeof(use)); for(i=0;i<13;i++) { scanf("%d%c",&t,&c); t--; if(c=='m') t+=0; else if(c=='s') t+=9; else if(c=='p') t+=18; else if(c=='c') t+=27; cnt[t]++; } for(i=0;i<34;i++) { cnt[i]++; if(cnt[i]<=4&&judge()) { ans++; use[i]=1; } cnt[i]--; } if(ans) { printf("%d",ans); for(i=0;i<34;i++) { if(use[i]==0) continue; t=i%9; if(i/9==0) printf(" %dm",t+1); else if(i/9==1) printf(" %ds",t+1); else if(i/9==2) printf(" %dp",t+1); else printf(" %dc",t+1); } printf("\n"); } else printf("Nooten\n"); } return 0; }
相关文章推荐
- 如何完全删除SQL Server2008。
- vim文本编辑器
- LM算法入门
- 观察者模式
- /*捕食者与被捕食者求大神解题C++.*/
- C++ AES之CBC加密模式
- Java学习中遇到的一些问题
- 大龄屌丝自学笔记--Java零基础到菜鸟--027
- Excel函数、快捷键等
- IOS 键盘的显示与关闭,以及移动显示(UITextView处理完整版)
- V210 SPI驱动分析
- Java的一些经验讲述
- 项目3——括号的匹配
- Tarena - 集合(一)
- 图解JSP与Servlet的关系
- win10系统时间怎么设置显示为24小时制?
- 项目范围管理论文提纲
- Java编程中应用的GUI设计基础
- cocos2dx中UTF-8和GBK2312之间的转换
- c# 调用Microsoft XPS Document Writer打印机,将Pdf文件转换成Xps文件