1. 三带一

打印 上一主题 下一主题

主题 1664|帖子 1664|积分 4994

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
所谓“三带一”牌型,即四张手牌中,有三张牌一样,别的一张不与其他牌相同,换种说法,四张手牌经过重新排列后,可以组成 AAABAAAB 型。
输入格式

第一行输入一个整数 TT ,代表斗田主的轮数。
接下来 TT 行,每行输入一个长度为 44 的字符串,代表小蓝的手牌。
字符 { 'A','2','3','4','5','6','7','8','9','X','J','Q','K' } 对应代表牌面 { A,2,3,4,5,6,7,8,9,10,J,Q,KA,2,3,4,5,6,7,8,9,10,J,Q,K } 。
牌面中不包含大小王。
输特别式

输出 TT 行,每行一个字符串,如果当前牌是“三带一”牌型,输出 Yes ,否则输出 No 。
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5.     int T;
  6.     cin >> T;
  7.     while (T--) {
  8.         string s;
  9.         cin >> s;
  10.         int count[13] = {0};
  11.         for (char c : s) {
  12.             int index;
  13.             if (c == 'A') {
  14.                 index = 0;
  15.             } else if (c == 'X') {
  16.                 index = 9;
  17.             } else if (c == 'J') {
  18.                 index = 10;
  19.             } else if (c == 'Q') {
  20.                 index = 11;
  21.             } else if (c == 'K') {
  22.                 index = 12;
  23.             } else {
  24.                 index = c - '2' + 1; // 处理'2'到'9'
  25.             }
  26.             count[index]++;
  27.         }
  28.         int distinct = 0;
  29.         int max_count = 0;
  30.         for (int i = 0; i < 13; ++i) {
  31.             if (count[i] > 0) {
  32.                 distinct++;
  33.                 if (count[i] > max_count) {
  34.                     max_count = count[i];
  35.                 }
  36.             }
  37.         }
  38.         if (distinct == 2 && max_count == 3) {
  39.             cout << "Yes" << endl;
  40.         } else {
  41.             cout << "No" << endl;
  42.         }
  43.     }
  44.     return 0;
  45. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表