题目传送门->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