首页 > 代码库 > uva11584
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;}
uva11584
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。