#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
const char* mahjong[]={
"1T","2T","3T","4T","5T","6T","7T","8T","9T",
"1S","2S","3S","4S","5S","6S","7S","8S","9S",
"1W","2W","3W","4W","5W","6W","7W","8W","9W",
"DONG","NAN","XI","BEI",
"ZHONG","FA","BAI"
};
int cnt[34];
int ID(char *name){
for(int i = 0; i < 34; i++){
if(strcmp(mahjong[i], name)==0) return i;
}
return -1;
}
bool work_ks(int dep){
for(int i = 0; i < 34; i++)
if(cnt[i] >= 3){
if(dep == 3) return true;
cnt[i] -= 3;
if(work_ks(dep+1)) return true;
cnt[i] += 3;
}
for(int i = 0; i <= 24; i++)
if(i%9<=6 && cnt[i]>=1 && cnt[i+1]>=1 && cnt[i+2]>=1){
if(dep == 3) return true;
cnt[i]--; cnt[i+1]--; cnt[i+2]--;
if(work_ks(dep+1)) return true;
cnt[i]++; cnt[i+1]++; cnt[i+2]++;
}
return false;
}
bool work_j(){
for(int i = 0; i < 34; i++){
if(cnt[i] >= 2){
cnt[i] -= 2;
if(work_ks(0)) return true;
cnt[i] += 2;
}
}
return false;
}
int main(){
char s[100];
int t = 0;
int mj[30];
while(scanf("%s",&s) == 1){
if(s[0] == '0') break;
mj[0] = ID(s);
for(int i = 1; i < 13; i++){
scanf("%s",&s);
mj[i] = ID(s);
}
printf("Case %d:",++t);
bool ok = false;
for(int i = 0; i < 34; i++){
memset(cnt, 0, sizeof(cnt));
for(int j = 0; j < 13; j++) cnt[mj[j]]++;
if(cnt[i] >= 4) continue;
cnt[i]++;
if(work_j()){
ok=true;
printf(" %s",mahjong[i]);
}
cnt[i]--;
}
if(!ok) printf(" Not ready");
printf("\n");
}
return 0;
}
11210
最新推荐文章于 2020-12-19 12:09:52 发布