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

}

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

目录
相关文章
|
4月前
|
存储 SQL 关系型数据库
深入探究InnoDB的MVCC快照机制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
320 5
深入探究InnoDB的MVCC快照机制
|
9月前
|
算法 Java
BTRFS - COW B-trees
介绍btrfs的COW特性。
99 1
|
9月前
|
存储 缓存 NoSQL
cow、mor与mow
cow、mor与mow
|
9月前
|
存储 安全 Java
简单聊聊copy on write(写时复制)技术
简单聊聊copy on write(写时复制)技术
|
PHP C++
phpCOW机制(写时复制)
phpCOW机制(写时复制)
101 0
phpCOW机制(写时复制)
|
存储 缓存 NoSQL
有关 COW (CopyOnWrite) 的一切
写入时复制(英语:Copy-on-write,简称COW)是一种计算机 [程序设计]领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是 [透明]的。此做法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy) 被创建,因此多个调用者只是读取操作时可以共享同一份资源。
有关 COW (CopyOnWrite) 的一切
|
存储 索引
LotusDB 设计与实现—3 内存 memtable
顾名思义,memtable 是内存中维护的组件,在 LSM Tree 存储模型中,memtable 相当于一块内存 buffer,数据写入到 WAL 后,然后在 memtable 中更新。memtable 的数据积累到一定的阈值之后,批量 Flush 到磁盘,这样做的目的是延迟写磁盘,并且将随机的 IO 写入转换为批量的顺序 IO,这也是 LSM 存储模型的核心思路。
183 0
|
Ubuntu 安全 Linux
脏牛(Dirty Cow)快速指南
快速了解脏牛漏洞
14966 0
|
NoSQL 容器
【LevelDB源码剖析系列】SkipList与Memtable
memtable是LevelDB的核心数据结构之一,它的底层实现是SkipList,是一个内存层面的容器,负载主要的写需求。   SkipList        SkipList其实一个一个多层次链表,在查找时,先在最后层次进行查找,找到比较大的数据时就往低层次退,        直到找到相等的key
5989 0