给一个字符串,划分成最少的回文串
如aaadbccb ----> aa d bccb
f[i] = miin{ f[j]+1 } j<i, 且 s[j...i]是回文串
#include <iostream> #include <cstring> using namespace std ; const int N=1000; char s[N]; int p[N][N],f[N],vis[N][N],n; int test(int a,int b){ if(a>=b) return 1; if(s[a]!=s[b]) return 0; if(vis[a][b]) return p[a][b]; vis[a][b]=1; return p[a][b]=test(a+1,b-1); } void dp(){ int i,j; for(i=1;i<=n;i++) f[i]=i+1; for(i=1;i<=n;i++) for(j=0;j<i;j++) if(test(j+1,i)) f[i]=min(f[i],f[j]+1); } int main(){ int T; cin>>T; while(T--){ scanf("%s",s+1); n=strlen(s+1); memset(vis,0,sizeof vis); dp(); printf("%d\n",f[n]); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!