算法题:cow

简介: **题目:奶牛贝茜在她最喜欢的牧场中发现了一块石碑,上面刻有神秘的碑文。碑文的文字似乎来自一种神秘的古代语言,可看作一个只包含 C,O,W 三种字符的字符串。尽管贝茜无法解密该文字,但是她很欣赏 C,O,W 按顺序构成她最喜欢的单词 COW。

**题目:

奶牛贝茜在她最喜欢的牧场中发现了一块石碑,上面刻有神秘的碑文。

碑文的文字似乎来自一种神秘的古代语言,可看作一个只包含 C,O,W 三种字符的字符串。

尽管贝茜无法解密该文字,但是她很欣赏 C,O,W 按顺序构成她最喜欢的单词 COW。

她想知道 COW 在碑文中一共出现了多少次。

她不介意 C,O,W 之间是否存在其他字符,只要这三个字符按正确的顺序出现即可。

她也不介意多个不同的 COW 是否共享了一些字符。

例如,COW 在 CWOW 中只出现一次,在 CCOW 中出现两次,在 CCOOWW 中出现八次。

给定碑文中的文字,请帮助贝茜计算 COW 出现的次数。

输入格式:

第一行包含 N。

第二行包含一个长度为 N 的字符串,其中只包含字符 C,O,W。

输出格式:

输出给定字符串中 COW 作为子序列(不一定连续)的出现次数。

数据范围:

1≤N≤105

输入样例:

6

COOWWW

输出样例:

6

分析:记忆化搜索

输入字符串

从前往后遍历

如果遍历到‘O’,它只会与前面的‘C’组成”CO“,所以不需要管后面的‘C’的数量

同理如果遍历到‘W’,它只会与前面的‘CO’组成”COW“,所以不需要管后面的‘CO’的数量

记录当前‘C’,“CO”,“COW”的个数**

源码:

include <bits/stdc++.h>

using namespace std;

int main()

{

int n;
long long a=0,b=0,c=0;
string s;
cin >> n>> s;
for(auto d:s)
{
if(d=='C')
    {
        a++;
    }else if(d=='O')
    {
        b+=a;
    }else
    {
        c+=b;
    }
}
cout << c<<endl;
return 0;

}

这道题本身不难,但是真的很难想!

目录
相关文章
antlr4 入门IDEA插件使用——(二)
antlr4 入门IDEA插件使用——(二)
549 0
|
6月前
|
人工智能 API 数据库
MCP Server 开发实战 | 大模型无缝对接 Grafana
以 AI 世界的“USB-C”标准接口——MCP(Model Context Protocol)为例,演示如何通过 MCP Server 实现大模型与阿里云 Grafana 服务的无缝对接,让智能交互更加高效、直观。
1940 116
|
数据处理 数据格式
|
存储 NoSQL 算法
Redis数据组织揭秘:全局哈希表
Redis数据组织揭秘:全局哈希表
|
C语言
C语言----寻找100~999范围内的质数--素数
C语言----寻找100~999范围内的质数--素数
613 3
|
存储 缓存 NoSQL
cow、mor与mow
cow、mor与mow
|
存储 安全 Java
简单聊聊copy on write(写时复制)技术
简单聊聊copy on write(写时复制)技术
|
SQL 关系型数据库 MySQL
一文带你学透MySQL核心——DQL语言
DQL:英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
649 0
|
存储 Perl