• UVALive 4394 String painter ——(区间DP)


      其实这个dp过程有点似懂非懂。。。代码如下:

     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <string.h>
     4 using namespace std;
     5 const int N = 100 + 5;
     6 
     7 char a[N],b[N];
     8 int dp[N][N];
     9 int f[N];
    10 
    11 int main()
    12 {
    13     while(scanf("%s",a+1) == 1)
    14     {
    15         int n = strlen(a + 1);
    16         scanf("%s",b+1);
    17         for(int i=1;i<=n;i++) dp[i][i] = 1;
    18         for(int len=2;len<=n;len++)
    19         {
    20             for(int i=1;i+len-1<=n;i++)
    21             {
    22                 int j = i + len - 1;
    23                 dp[i][j] = dp[i+1][j] + (b[i] == b[i+1] ? 0 : 1);
    24                 for(int k=i+1;k<=j;k++)
    25                 {
    26                     if(b[k] == b[i])
    27                     dp[i][j] = min(dp[i][j], dp[i+1][k] + dp[k+1][j]);
    28                 }
    29             }
    30         }
    31         for(int i=1;i<=n;i++)
    32         {
    33             if(a[i] == b[i]) f[i] = f[i-1];
    34             else
    35             {
    36                 f[i] = 2e9;
    37                 for(int k=i;k>=1;k--)
    38                 {
    39                     f[i] = min(f[i], f[k-1] + dp[k][i]);
    40                 }
    41             }
    42         }
    43         printf("%d
    ",f[n]);
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    团队项目-选题报告
    图论3-分层图最短路
    图论2-次短路计数
    图论1-k短路
    noi online 提高组t2冒泡排序
    图和树
    搜索(bfs)
    搜索(dfs)
    笔记
    打工
  • 原文地址:https://www.cnblogs.com/zzyDS/p/6567569.html
Copyright © 2020-2023  润新知