博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3280 Cheapest Palindrome(DP 回文变形)
阅读量:6328 次
发布时间:2019-06-22

本文共 875 字,大约阅读时间需要 2 分钟。

题目链接:

题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价

Sample Input

3 4abcba 1000 1100b 350 700c 200 800

Sample Output

900

分析:这是一道最长回文串的变形,就是LCS

  一串字符要变成回文,对于一个字符来说,删掉它,或者增加对称的一个该字符,都能达到回文的效果,所以是等价的。所以取代价的的时候选择最小的就可以。

  至于动态规划方程:令dp[i][j]表示从第 i 个字符到第j个字符变成回文的最小代价,初始为0。接着LCS

dp[i][j] = min(dp[i+1][j]+cost[s[i]-'a'] , dp[i][j-1]+cost[s[j]-'a']) ;                 if(s[i]==s[j])  dp[i][j] = min(dp[i+1][j-1],dp[i][j]);

代码如下:

1 # include
2 # include
3 # define maxn 2005 4 char s[maxn]; 5 int dp[maxn][maxn],cost[maxn]; 6 7 int min(int a,int b){ 8 return a
=1;i--){26 dp[i][j] = min(dp[i+1][j]+cost[s[i]-'a'] , dp[i][j-1]+cost[s[j]-'a']) ;27 if(s[i]==s[j])28 dp[i][j] = min(dp[i+1][j-1],dp[i][j]);29 }30 }31 printf("%d\n",dp[1][m]);32 }33 return 0;34 }

 

 

转载地址:http://rwfoa.baihongyu.com/

你可能感兴趣的文章
在ubuntu下安装rails
查看>>
Silverlight之我见——数据批示(2)
查看>>
python类库32[多进程通信Queue+Pipe+Value+Array]
查看>>
Android之使用JNI调用NDK
查看>>
[design decision] user awareness: 自动安装还是不自动安装?
查看>>
表格边框
查看>>
bootstrap源码学习与示例:bootstrap-alert
查看>>
love2d教程7--绘图顺序
查看>>
DataGridView扩展方法行号、全选、导出到Excel(引用excel组件、生成html两种方式)
查看>>
自己封装的一个Java版图片工具,具备压缩,伸缩变换,透明处理,格式转换等功能....
查看>>
安装JBpm
查看>>
javascript中的自执行匿名函数
查看>>
linux下sprintf_s函数的替代
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Microsoft.Web.Administration.ServerManager启用IIS的ISAPI
查看>>
关于批量数据更新的问题(C#高性能)
查看>>
[转]Reactor模式,或者叫反应器模式
查看>>
Visual Studio Test Project的一个小问题
查看>>
How to Uninstall/Reinstall 10g CRS Clusterware?
查看>>
Java数据导入(读)Excel文件 解析
查看>>