知方号

知方号

2023CSP<庄园消消乐一共几关卡啊>

2023CSP

题目传送门->P9753 [CSP-S 2023] 消消乐 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

大致题意

相邻两个字符相同即可消除,如果一个字符串

经过若干次消除成为空串,称它为可消除的。

现给定长度为n的字符串s,求s有多少可被消除的子串

50分思路+代码

首先,读懂题目,发现一种简单暴力的做法:

枚举每一个子串,通过与括号消除类似的方式进行消除,

如果最后能消完,就计入答案。

代码:

#includeusing namespace std;#define For(i, j, k) for(int i = j; i = k; i--)#define MaxN 8005int n, ans;char a[MaxN];int main(){cin >> n;For(i, 1, n) cin >> a[i]; //用字符数组存储For(i, 1, n){stack s; //用栈模拟括号消除For(j, i, n){if(!s.empty() && s.top() == a[j]){s.pop();} else {s.push(a[j]);}if(s.empty()){ans++;}}}cout n; for(int i = 0; i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。