poj 3280 Cheapest Palindrome 区间dp
2015-09-27 14:45
323 查看
题意:
给添加和删除每个字符的代价,求将一个字符串变成回文串的最小代价。
分析:
区间dp,采用了备忘录方法。
代码:
给添加和删除每个字符的代价,求将一个字符串变成回文串的最小代价。
分析:
区间dp,采用了备忘录方法。
代码:
//poj 3280 //sep9 #include<iostream> using namespace std; const int maxN=2048; int n,m; int dp[maxN][maxN]; char s[maxN]; int add_cost[256],del_cost[256]; int rec(int x,int y) { if(dp[x][y]!=-1) return dp[x][y]; if(x>=y) return dp[x][y]=0; if(s[x]==s[y]) return dp[x][y]=rec(x+1,y-1); int p=min(add_cost[s[x]],del_cost[s[x]])+rec(x+1,y); int q=min(add_cost[s[y]],del_cost[s[y]])+rec(x,y-1); return dp[x][y]=min(p,q); } int main() { scanf("%d%d",&n,&m); scanf("%s",s); while(n--){ char c[8]; int a,b; scanf("%s%d%d",c,&a,&b); add_cost[c[0]]=a; del_cost[c[0]]=b; } memset(dp,-1,sizeof(dp)); printf("%d\n",rec(0,m-1)); return 0; }
相关文章推荐
- MySQL下载安装、配置与使用(win7x64)
- 飞机订票系统测试用例
- iOS开发:Iphone的常用控件大全
- A Bug's Life 并查集
- Unity该插件NGUI得知(9)—— Tween并转换成世界坐标系的大小NGUI尺寸
- linux sticky bit 目录权限 rwt权限
- hadoop编程技巧(6)---处理大量的小型数据文件CombineFileInputFormat申请书
- Android实时文件夹创建方法
- Illegal modifier for the variable str; only final is permitted的错误的深入理解
- centos---安装adobe-release-i386-1.0-1.noarch.rpm
- 【转】malloc与free的底层实现
- 《构建之法》阅读疑问
- 教程分享:如何实现Android沉浸式状态栏——教你让你的状态栏变个色!
- asp.net分页功能实现
- iOS真机调试(XCode 7)无需购买开发者计划
- [HihoCoder] Highway 高速公路问题
- JSON.stringify()JSON转字符串 和 JSON.parse()字符串转JSON对象
- 【bzoj3398】【Usaco2009 Feb】【Bullcow 牡牛和牝牛】【组合数学】
- iOS --- 使用AVFoundation的AVAudioPlayer来播放音频
- 停车场管理系统主要方法代码