龙星尘 2023-03-25 15:10 采纳率: 42.9%
浏览 51
已结题

C++算法题(不是很难)

贝西和埃尔西正在密谋最终推翻农夫约翰!他们通过N(1≤N≤2*10^5)条短信进行计划。他们的对话可以用长度为N的字符串S表示,其中Si是B或E,这意味着第i条消息分别由Bessie或Elsie发送。

然而,农夫约翰听说了这个计划,并试图拦截他们的谈话。因此,S的一些字母是F,这意味着Farmer John混淆了信息,发件人未知,也就是说'F'既可能是'B'也可能是'E'。

非模糊对话的兴奋程度是奶牛重复发送的次数,也就是说,子串BB或EE在S中出现的次数。你想找到原始信息的兴奋程度,但你不知道Farmer John的哪些信息实际上是Bessie/Elsie的。在所有可能的情况下,输出S的所有可能的兴奋水平。

INPUT FORMAT(输入来自终端/stdin):

第一行将由一个整数N组成。

下一行包含S。

OUTPUT FORMAT(将输出打印到终端/stdout):

第一个输出K,可能的不同兴奋水平的数量。在接下来的K行中,按递增顺序输出兴奋程度。

样本输入:

4
BEEF

样本输出:

2
1
2

样本输入:

9
FEBFEBFEB

样本输出:

2
2
3

样本输入:

10
BFFFFFEBFE

样本输出:

3
2
4
6
希望能各位帮忙解决此问题,最好给出代码和思路,谢谢!(不要超时哦1000ms)

  • 写回答

2条回答 默认 最新

  • IT_service_mesh 2023-03-25 15:19
    关注

    参考GPT和自己的思路:这道题可以用枚举的方法,枚举所有可能的F是B还是E,然后分别统计BB和EE的个数,最后输出所有可能的兴奋程度。

    具体实现可以用一个循环枚举F是B还是E,然后用两个变量分别记录统计得到的BB和EE的个数,最后将BB和EE的个数相加即可得到当前情况下的兴奋程度。最后将所有可能的兴奋程度存储在一个数组中并排序,最后输出数组中所有不同的元素即可。

    代码如下:

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月27日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器