uva 10739

来源:互联网 发布:怎么做软件 编辑:程序博客网 时间:2024/05/29 03:26

dp 只有三个操作  当str[i] != str[j] 时 dp(i, j) = min(dp(i+1, j), dp(i+1, j-1), dp(i, j-1))

#include <iostream>#include <cstdio>#include <cstring>#include <cstring>#include <algorithm>using namespace std;char str[1010];int f[1005][1005];int n;int dp(int a, int b){    if(f[a][b] != -1)        return f[a][b];    if(a >= b)        return f[a][b] = 0;    if(str[a] == str[b])        f[a][b] = dp(a+1, b-1);    else        f[a][b] = min(dp(a+1, b-1), min(dp(a+1, b), dp(a, b-1)))+1;    return f[a][b];}int main(){    int t, ca = 1;    scanf("%d",&t);    while(t--)    {        scanf("%s",str);        int len = strlen(str);        memset(f, -1, sizeof(f));        printf("Case %d: %d\n", ca++, dp(0, len-1));    }    return 0;}


原创粉丝点击