EODVT 2023-01-30 21:13 采纳率: 33.3%
浏览 33
已结题

C++算法-哞哞操作

因为贝茜厌倦了玩她通常的文本字符串,其中唯一的 字符是“C”,“O”和“W”,农夫约翰给她Q
新字符串 (1≤Q≤100
),其中唯一的字符是“M”和“O”。 在字符“M”和“O”中最喜欢的词显然是“MOO”,所以她想要 以将每个Q
使用以下操作将字符串放入“MOO”中:

将第一个或最后一个字符替换为其相反的字符(以便“M” 变为“O”,“O”变为“M”)。
删除第一个或最后一个字符。
不幸的是,贝西很懒惰,不想执行比 绝对必要。对于每个字符串,请帮助她确定最小值 形成“MOO”或输出所需的操作数−1
如果这是 不可能的。

输入格式(输入从终端/标准到达):
输入的第一行包含的值Q
.
下一个Q
每行输入由一个字符串组成,每个字符串都包含其字符 “M”或“O”。每个字符串至少包含 1 个字符,最多包含 100 个字符。

输出格式(打印输出到终端/标准输出):
在单独的行上输出每个输入字符串的答案。
示例输入:
3
MOMMOM
MMO
MOO
示例输出:
4
-1
0
一系列4
将第一个字符串转换为“MOO”的操作为 遵循:

Replace the last character with O (operation 1)
Delete the first character (operation 2)
Delete the first character (operation 2)
Delete the first character (operation 2)
第二个字符串不能转换为“MOO”。第三个字符串已经 “MOO”,因此无需执行任何操作。

  • 写回答

3条回答 默认 最新

  • CodeBytes 2023-01-31 10:25
    关注

    仅供参考,代码如下:

    
    #include <bits/stdc++.h>
    using namespace std;
    
    int n, m, cnt;
    char s[105];
    
    int main()
    {
        cin >> n;
        while (n--)
        {
            cin >> (s + 1);
            m = strlen(s + 1);
            cnt = 0;
            for (int i = 1; i <= m; i++)
            {
                if (s[i] == 'O')
                    cnt++;
            }
            if (cnt % 2 == 0)
                cout << m / 2 - 1 << endl;
            else
                cout << -1 << endl;
        }
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月4日
  • 已采纳回答 2月4日
  • 修改了问题 1月30日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么