All pastes #2101699 Raw Edit

Stuff

public text v1 · immutable
#2101699 ·published 2012-01-09 21:49 UTC
rendered paste body
#include <stdio.h>
#include <string.h>
#define INF 1000000000

int len;
int d[1005][1005];
char s[1005];

int mini( int a, int b ){
    return a<b?a:b;
}

int dp( int x, int y ){
    if(d[x][y]!=INF) return d[x][y];
    if(x>y)return INF;
    else if(y==x+1){
        if(s[x]==s[y])d[x][y] = 1;
        else d[x][y] = 2;
        return d[x][y];
    }

    for( int i=y; i>=x; i-- ){
        if(s[x]==s[i]){
            if( i<y ){
                d[x][y] = mini( d[x][y],dp(x,i) + dp(i+1,y) );
                if(d[x][y]==2)break;
            }
            else{
                int ret = dp(x+1,y-1);
                if(ret!=1)ret+=2;

                d[x][y] = mini( d[x][y], ret);
                if(d[x][y]==1)break;
            }
        }
    }

    return d[x][y];
}

int main(){
    int t;
    scanf("%d",&t);

    while(t--){
        scanf("%s",s);

        len = strlen(s);

        for(int i=0;i<len;i++){
            for(int j=0;j<len;j++){
                d[i][j] = INF;
            }
            d[i][i] = 1;
        }

        printf("%d\n",dp(0,len-1));
    }

    return 0;
}