• uva11584


    将课本上所述方法实现即可,代码如下:

    /*
     * Author:  Bingo
     * Created Time:  2015/1/25 23:49:49
     * File Name: uva11584.cpp
     */
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <string>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <set>
    #include <time.h>
    using namespace std;
    const int maxint = -1u>>1;
    const int maxlen=1050;
    int d[maxlen];
    int s[maxlen][maxlen];
    string st;
    int work(){
        int len=st.size();
        memset(s,0,sizeof(s));
        for (int i=0;i<len;i++){
            int p,q;
            s[i][i]=1;
            //ji
            p=i-1;q=i+1;
            while (p>=0&&q<len&&st[p]==st[q]){
                s[p][q]=1;
                p--;q++;
            }
            //odd_left
            p=i-1;q=i;
            while (p>=0&&q<len&&st[p]==st[q]){
                s[p][q]=1;
                p--;q++;
            }
            //odd_right
            p=i;q=i+1;
            while (p>=0&&q<len&&st[p]==st[q]){
                s[p][q]=1;
                p--;q++;
            }
        }
    }//s[i][j]是否为回文串
    int main()
    {
        int T;
        cin>>T;
        //string st;
        while (T--){
            cin>>st;
            work();
            int len=st.size();
            for (int i=0;i<len;i++)
                d[i]=100000;
            for (int i=0;i<len;i++){
                int j=0;
                if (s[0][i]) d[i]=1;
                else
                for (j=0;j<i;j++){
                    if (s[j+1][i]) d[i]=min(d[i],d[j]+1);
                }
            }
            cout<<d[len-1]<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    oracle sql语句
    Block
    Bug调试
    Xcode 项目文件介绍
    Mac终端命令
    Objective-C命名编写规范
    2014-07-23 .NET实现微信公众号接入
    2014-07-22 如何成为一名合格的职业人士
    3、C# 文件处理工具集
    2、C# 编码/加密工具集
  • 原文地址:https://www.cnblogs.com/acbingo/p/4267469.html
Copyright © 2020-2023  润新知