HDU 2476String painter 区间dp
来源:互联网 发布:java设置编码方式 编辑:程序博客网 时间:2024/06/05 10:16
M - String painter
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uAppoint description:
Description
There are two strings A and B with equal length. Both strings are made up of lower case letters. Now you have a powerful string painter. With the help of the painter, you can change a segment of characters of a string to any other character you want. That is, after using the painter, the segment is made up of only one kind of character. Now your task is to change A to B using string painter. What’s the minimum number of operations?
Input
Input contains multiple cases. Each case consists of two lines:
The first line contains string A.
The second line contains string B.
The length of both strings will not be greater than 100.
The first line contains string A.
The second line contains string B.
The length of both strings will not be greater than 100.
Output
A single line contains one integer representing the answer.
Sample Input
zzzzzfzzzzzabcdefedcbaababababababcdcdcdcdcdcd
Sample Output
67
思路是先求出从空白串转化到b串要花多少次
然后比较a串和b串相同元素的个数在优化答案
ACcode;
#include<iostream>#include<cstdio>#include<cstring>#define maxn 120using namespace std;int dp[maxn][maxn],ans[maxn];char a[maxn],b[maxn];int main(){ while(scanf("%s\n%s",a+1,b+1)!=EOF){ int n=strlen(a+1); for(int i=0;i<=n;++i)dp[i][i]=1; for(int l=2;l<=n;++l) for(int i=1;i<=n-l+1;++i){ int j=i+l-1; dp[i][j]=dp[i+1][j]+1; for(int k=i+1;k<=j;++k) if(b[k]==b[i]) dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]); } ans[0]=0; for(int i=1;i<=n;++i){ ans[i]=dp[1][i]; if(a[i]==b[i])ans[i]=ans[i-1]; for(int j=1;j<=i;++j)ans[i]=min(ans[i],dp[j+1][i]+ans[j]); } printf("%d\n",ans[n]); } return 0;}
0 0
- hdu 2476 String painter 区间dp
- hdu 2476 String painter 区间dp
- HDU 2476 String painter 区间dp
- hdu 2476 String painter(区间DP)
- hdu 2476 String painter (区间dp)
- Hdu 2476 String painter(区间dp)
- HDU 2476 String painter(区间DP)
- 【HDU 2476】String Painter(区间DP)
- HDU 2476 - String painter(区间DP)
- hdu 2476 String painter(区间dp)
- HDU 2476 String painter(区间dp)
- HDU 2476 String painter (区间DP)
- HDU 2476 String painter(区间DP)
- hdu 2476 String painter(区间DP)
- HDU 2476 String painter(区间DP)
- HDU 2476 String painter(区间DP)
- hdu 2476 String painter(区间dp)
- HDU 2476 String painter(区间dp)
- 利用hadoop计算文件中的最大值
- easyui datagrid 不显示分页栏,可以自定义显示分页按钮
- Django项目部署 - 主流部署方式 Django+mod_wsgi + Apache
- pythonchallenge初试
- 三种颜色铺满十个li
- HDU 2476String painter 区间dp
- 第5周 经典小程序1 题 动态数组的实现
- 数字方阵
- Jenkins插件开发笔记(1):导入Jenkins源码
- php发送email最终版
- Spark入门实战系列 spark编程模型--IDEA搭建及实战
- MySQL查询一小时之内的数据
- jquery的ajax(put网页前端向服务器发送数据,服务器进行数据持久化等操作)
- SOA,Webservice,SOAP,REST,RPC,RMI,JMS的区别与联系