POJ3280
Posted beiyueya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ3280相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<iostream> #include<string> #include<algorithm> using namespace std; int f[2000][2000]; int main() { string str; int n,m,i,j,cost[30]; cin>>n>>m; getchar(); getline(cin,str); for(i=1;i<=n;i++) { char c; int cost1,cost2; cin>>c>>cost1>>cost2; cost[c-‘a‘]=min(cost1,cost2); } for(i=str.size()-2;i>=0;i--) { for(j=i+1;j<str.size();j++) { if(str[i]==str[j]) f[i][j]=f[i+1][j-1]; else { f[i][j]=min((f[i+1][j]+cost[str[i]-‘a‘]),(f[i][j-1]+cost[str[j]-‘a‘])); } } } cout<<f[0][str.size()-1]<<endl; return 0; }
算是字符串dp中的回文串,但是实际上
是背包的思想,在确保回文串的前提下求最小的代价。
加上lcs的做法。
以上是关于POJ3280的主要内容,如果未能解决你的问题,请参考以下文章