• hdu1513 (滚动数据压缩空间)


    给定一个字符串,问最少添加多少个字符可以使得这个字符串变成回文串

    if(str[i]==str[j]) dp[i][j] = dp[i+1][j-1]

    else dp[i][j] = min(dp[i][j-1],dp[i+1][j]);

    可以看出,dp[i][j] 要么是从dp[i+1][] 这个状态转移而来,要么是从dp[i][j-1]这个状态转移而来(这个只要从小到大枚举j即可)

    所以我们可以用滚动数组来压缩空间

     1 #pragma warning(disable:4996)
     2 #pragma comment(linker, "/STACK:1024000000,1024000000")
     3 #include <stdio.h>
     4 #include <string.h>
     5 #include <time.h>
     6 #include <math.h>
     7 #include <map>
     8 #include <set>
     9 #include <queue>
    10 #include <stack>
    11 #include <vector>
    12 #include <bitset>
    13 #include <algorithm>
    14 #include <iostream>
    15 #include <string>
    16 #include <functional>
    17 #include <unordered_map>
    18 typedef __int64 LL;
    19 const int INF = 999999999;
    20 
    21 /*
    22 
    23 if(str[i]==str[j])
    24     dp[i][j] = dp[i+1][j-1]
    25 else
    26     dp[i][j] = min(dp[i][j-1],dp[i+1][j])
    27 */
    28 const int N = 5000 + 10;
    29 int dp[2][N];
    30 char str[N];
    31 
    32 
    33 int main()
    34 {    
    35     int n;
    36     while (scanf("%d%s", &n, str+1) != EOF)
    37     {
    38         memset(dp, 0, sizeof(dp));
    39         for (int i = n; i >= 1;--i)
    40         {
    41             for (int j = i + 1;j <= n;++j)
    42             {
    43                 if (str[i] == str[j])
    44                     dp[i%2][j] = dp[(i + 1)%2][j - 1];
    45                 else
    46                     dp[i%2][j] = std::min(dp[(i + 1)%2][j], dp[i%2][j - 1])+1;
    47             }
    48         }
    49         printf("%d
    ", dp[1][n]);
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    LED事件
    CSR8670按钮事件
    编译提示:warning: ISO C89 forbids mixed declarations and code
    C#使用Smtp,通过qqmail发送邮件
    编写VS的Snippet
    WPF的Clipboard.SetText()有问题
    HttpListenerRequest.ContentEncoding
    jQuery的Deferred对象教程
    visual studio如何修改c++项目的.net framework框架版本
    如何让Sqlite支持Entity Framework Code-First
  • 原文地址:https://www.cnblogs.com/justPassBy/p/4782816.html
Copyright © 2020-2023  润新知