题解:P14730 [ICPC 2022 Seoul R] Palindrome Type
_ruyingsuixing_ · · 题解
P14730 [ICPC 2022 Seoul R] Palindrome Type 题解
纯享阅读区
题目传送门
总体分析
核心:修改字符串 -1。
因此,可以从
思路引导
:::warning[提问]{open}
如何 DFS 搜索修改过程算出
:::success[DFS 函数]{open} 使用 双指针。
当
- 如果左指针
l 和右指针r 对应的s_l=s_r ,那么这部分已经是回文的,l 向右移,r 向左移。 - 否则:
- 如果剩余次数
step=0 ,无法继续修改,返回无法完成。 - 如果删除
l+1 或r+1 可完成,返回可以完成。 - 否则返回无法完成。
- 如果剩余次数
返回无法完成。 :::
:::error[警告]
如果 -1。
:::
核心代码
bool dfs(int l,int r,int step){
while(l<r){
if(s[l]==s[r])l++,r--;
else{
if(!step)return 0;
if(dfs(l+1,r,step-1)||dfs(l,r-1,step-1))return 1;
return 0;
}
}
return 1;
}