a题目描述
七星不靠是中国麻将竞赛规则的番种,胡牌时由东南西北中发白7张,外加其他花色的
147、258、 369不相连
的牌型,且没有将牌而组成。
-百度百科
七星不靠中的七星是指:东西南北中发白,也就是牌中必须有这七张。而其它牌按下述
的来拼全:
东西南北中发白+147万+258饼+369条
东西南北中发白+147万+258条+369饼
东西南北中发白+147条+258万+369饼
东西南北中发白+147条+258饼+369万
东西南北中发白+147饼+258条+369万
东西南北中发白+147饼+258万+369条
由于胡牌时只需要14张牌,而上述组合均有16张,那么除了东西南北中发白必须有外,
其它三色可以随便去
掉两张,都可以组成七星不靠。
我们的任务是,假设我们的14张牌中已经包含了东西南北中发白这7张牌,另外的牌都是
万饼条的序数牌,给
出另外的这7张牌,判断是否能组成七星不靠。
输入描述:
输入第一行为一个正整数T (T<=1000), 表示有T组数据。
每组数据一行,包含7张牌,每张牌用"XY"表示,x为[1.. .9]的数字,Y为("W","
B", "T")中的-一个,分别表示
万,饼,条。注意,有可能出现同样的"XY",但是数量不会超过4个。
保证数据一定台法。
输出描述:
对于每一组数据,输出YES或者NO,分别表示可以或者不可以组成七星不靠。
示例1输入输出示例仅供调试,后台判题数据一般不包含 示例
输入
复制
4
1T4T7T2B5B8B9W
1T2T3T4T5T6T7T
1B2W3T4B5W6T8W
2B8B5B2B6T7W4W
输出
YES
NO
YES
NO
/*功能:*/
#include<bits/stdc++.h>
using namespace std;
int main() {
int n = 1;
cin >> n;
vector<string> vec(7);
string str1 = "147", str2 = "258", str3 = "369";
vector<string> vs = { "1T", "4T", "7T", "2B", "5B" ,"8B" ,"9W" };
while (n--) {
set<char> T, W, B;
int index = 0;
for (int i = 0; i < 7; ++i) {
string tmp;
cin >> tmp;
//tmp = vs[index++];
vec[i] = tmp;
switch (tmp[1])
{
case 'T':
T.insert(tmp[0]);
break;
case 'W':
W.insert(tmp[0]);
break;
case 'B':
B.insert(tmp[0]);
break;
default:
break;
}
}
if (T.size() > 3 || W.size() > 3 || B.size() > 3 || (T.size() + W.size() + B.size() < 7) ) {
cout << "NO" << endl;
}
else {
cout << "YES" << endl;
}
}
return 0;
}