POJ1159(Palindrome)
题目大意,给定一个字符串,求至少需插入多少字符使其变成回文。动态规划题。
#include <stdio.h>
#include <memory.h>
#include <string.h>
#define MIN(a,b) ((a)<(b)?(a):(b))
#define N 5001
char s[N];
int c[N];
int main()
{
int i,j,n,a,b;
while(scanf("%d",&n)!=EOF){
getchar();
gets(s);
for(i=n-2;i>=0;i--){
a=0;
for(j=i+1;j<n;j++){
b=a,a=c[j];
if(s[i]==s[j])
c[j]=b;
else
c[j]=MIN(c[j],c[j-1])+1;
}
}
printf("%d\n",c[n-1]);
memset(c,0,sizeof(c));
}
return 0;
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步