hdu 2476 String painter
来源:互联网 发布:php抓取网页指定内容 编辑:程序博客网 时间:2024/06/01 10:32
题意:用刷子把a串刷成b串;
题解:说实话我想不出来,看了别人的博客, 是先做用空串刷成b, 然后拿a和b做对比;大概是这么做,具体看代码注释;(感受到了分部做的强大);
代码:
#include <iostream>#include <string>#include <queue>#include <map>#include <algorithm>#include <cstring>#include <cstdio>#include <vector>#include <queue>using namespace std;const int MAXN = 108;int dp[MAXN][MAXN], ans[MAXN];char a[MAXN], b[MAXN];int main() { while (~scanf("%s%s", a, b)) { int ll = strlen(a); //第一部分第一种方法 for(int i = 0; i < ll; i++) { for(int j = 0; j < ll-i; j++) { int jj = i+j; dp[j][jj] = dp[j+1][jj]+1; for(int k = j+1; k <= jj; k++) if (b[j] == b[k]) dp[j][jj] = min(dp[j][jj], dp[j+1][k]+dp[k+1][jj]); //说实话我还没完全理解,大概意思就是如果两个地方相等刷一个地方 //时,可以顺便将另一个地方也刷掉,也可以这样写; // dp[j][jj] = min(dp[j][jj], dp[j+1][k-1]+dp[k][jj]); } } //第二种方法(别人都这样写) for(int i = ll-1; i >= 0; i--) { for (int j = i; j < ll; j++) { dp[i][j] = dp[i+1][j]+1; for(int k = i+1; k <= j; k++) { if (b[i] == b[k]) dp[i][j] = min(dp[i][j], dp[i+1][k]+dp[k+1][j]); } } }//第二部 for(int i = 0; i < ll; i++) { ans[i] = dp[0][i]; if (a[i] == b[i]) {//i这个点可以不刷 if (i == 0) ans[i] = 0; else ans[i] = ans[i-1]; } else { for(int j = 0; j < i; j++) ans[i] = min(ans[i], ans[j]+dp[j+1][i]); } } printf("%d\n", ans[ll-1]); } return 0;}
阅读全文
0 0
- HDU - 2476 String painter
- HDU 2476 String painter
- hdu 2476 String painter
- hdu 2476 String painter
- hdu 2476 String painter
- HDU 2476 String painter
- hdu 2476 String painter
- hdu 2476 String painter
- hdu 2476 String painter
- HDU-2476-String painter
- hdu 2476 String painter dp
- String painter (hdu 2476)
- hdu 2476 String painter 动态规划
- HDU 2476 String Painter(JAVA版)
- hdu 2476 String painter 区间dp
- hdu 2476 String painter 区间dp
- HDU 2476 String painter 区间dp
- hdu 2476 String painter(区间DP)
- 关于数组排序问题的详细过程
- 行锁妙用
- 数据结构之二叉查找树
- window批处理删除文件夹下所有大小为1651字节的jpg图片
- Arpa’s obvious problem and Mehrdad’s terrible solution (CodeForces
- hdu 2476 String painter
- 伸展树(Splay)
- 横向导航条页面居中的方法
- 线程通信常用方法
- IntelliJ Idea常用的快捷键
- HDU 1222 A
- 机器学习实战(第2章 k-近邻算法)
- Non-negative Partial Sums HDU
- 微信支付:curl出错,错误码:60