• UVa 11584


    DP问题,大体思路dp[i]=min(dp[j]+1),其中dp[i]为从0开头,到字符串第i个字符的子字符串的最优值,这个字串的后缀必然是回文串(1个字符也看做回文串)

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    #include <cmath>
    #include <vector>
    using namespace std;
    
    const int maxl= 1005;
    
    char s[maxl];
    int ispl[maxl][maxl], dp[maxl];
    
    void Init(int l)
    {
    	for (int i= 0; i< l; ++i){
    		ispl[i][i]= 1;
    	}
    
    	for (int w= 1; w< l; ++w){
    		int ui= l-w;
    		for (int i= 0; i< ui; ++i){
    			ispl[i][i+w]= s[i]== s[i+w] && (ispl[i+1][i+w-1] || 1==w) ? 1 : 0;
    		}
    	}
    	memset(dp, 0x3f, sizeof(dp));
    }
    
    int main()
    {
    	int n, l;
    	scanf("%d", &n);
    
    	while (n--){
    		scanf(" %s", s);
    		l= strlen(s);
    
    		Init(l);
    
    		dp[0]= 1;
    		for (int i= 1; i< l; ++i){
    			if (ispl[0][i]){
    				dp[i]= 1;
    				continue;
    			}
    			for (int j= 0; j< i; ++j){
    				if (1== ispl[j+1][i]){
    					dp[i]= min(dp[i], dp[j]+1);
    				}
    			}
    		}
    
    		cout<<dp[l-1]<<endl;
    
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    浅谈易语言“蓝屏”暗桩查找和处理方法
    解密入门教学(1-6)
    IOS之计算器实现
    瓦片地图与geoserver发布
    Mac使用入门
    postgres与osm初步使用
    python异步爬虫
    操作系统之死锁
    Android之IPC机制
    Android之WebView学习
  • 原文地址:https://www.cnblogs.com/Idi0t-N3/p/13812300.html
Copyright © 2020-2023  润新知