算法题: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;

}

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

目录
相关文章
|
5月前
|
存储 算法 数据库
BTRFS - A Forest,extent分配树,同步与并发
介绍Btrfs如何由树木森林构成。
70 3
|
5月前
|
算法 Java
BTRFS - COW B-trees
介绍btrfs的COW特性。
62 1
|
5月前
|
存储 缓存 NoSQL
cow、mor与mow
cow、mor与mow
|
5月前
|
存储 安全 Java
简单聊聊copy on write(写时复制)技术
简单聊聊copy on write(写时复制)技术
|
Unix
文件lseek操作产生空洞文件的方法
文件lseek操作产生空洞文件的方法
123 0
|
存储 缓存 NoSQL
有关 COW (CopyOnWrite) 的一切
写入时复制(英语:Copy-on-write,简称COW)是一种计算机 [程序设计]领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是 [透明]的。此做法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy) 被创建,因此多个调用者只是读取操作时可以共享同一份资源。
有关 COW (CopyOnWrite) 的一切
|
Ubuntu 安全 Linux
脏牛(Dirty Cow)快速指南
快速了解脏牛漏洞
14860 0
|
算法 Windows
深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法
  缺页中断(英语:Page fault,又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。
4195 0