01.#include<iostream>02.#include<cmath>03.#include<cstring>04.using namespace std;05.int main()06.{07.int N,n;08.int dp[200][200]={0};09.cin>>N;10.while(N--)11.{12.char a[200]={0};13.cin>>a;14.n=strlen(a);15.for(int i=0;i<n;i++)16.dp[i][i]=1;17.for(int i=1;i<n;i++)18.for(int j=0;j<=i;j++)19.{20.dp[j][i]=dp[j][i-1]+1;21.for(int k=j;k<=i-1;k++)22.{23.if(a[k]+1==a[i]||a[k]+2==a[i])24.dp[j][i]=min(dp[j][i],dp[j][k-1]+dp[k+1][i-1]);25.}26.}27.cout<<dp[0][n-1]<<endl;28.}29.return 0;30.}
本文介绍了一个基于动态规划的算法,用于计算将一个字符串转换为另一个字符串所需的最少编辑次数。通过递归分解问题并利用子问题的重叠性质,该算法有效地解决了字符串编辑距离问题。

1839

被折叠的 条评论
为什么被折叠?



