zoukankan      html  css  js  c++  java
  • HDU2577 How to Type 动态规划

    题义:给定一个不长于100的字符串,求输入完整个串的最少按键次数。

    思路:对于打完每一个字符后,保留其保留大写锁定和非大写的两种状态的最少按键次数即可,做题中竟然忘了在大写锁定的时候可以shift+alphabet可以打出小写

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <cctype>
    #include <algorithm>
    using namespace std;
    
    int dp[105][2];  // 零表示以小写结尾,1代表以大写结尾
    char s[105];
    int DP()
    {
        int length = strlen(s+1);
        dp[0][1] = 1;
        for (int i = 1; i <= length; ++i) { 
            if (islower(s[i])) {
                dp[i][0] = min(dp[i-1][0]+1, dp[i-1][1]+2);
                dp[i][1] = min(dp[i-1][0]+2, dp[i-1][1]+2);
            }
            else {
                dp[i][0] = min(dp[i-1][0]+2, dp[i-1][1]+2);
                dp[i][1] = min(dp[i-1][0]+2, dp[i-1][1]+1);
            }
        }
        return min(dp[length][0], dp[length][1]+1);
    }
    
    int main()
    {
        int T;
        for (scanf("%d", &T); T > 0; --T) {
            scanf("%s", s+1);
            printf("%d\n", DP());
        }
        return 0;
    }
  • 相关阅读:
    explain组合索引是否命中
    高并发优化
    docker基础篇一
    Web API 集成Serilog
    复习一下CSS,做笔记记录一下
    Process调用winform程序
    winform自动更新
    格式化xml 给没有节点的内容添加节点
    2.Grpc消息定义
    1.Grpc环境配置
  • 原文地址:https://www.cnblogs.com/Lyush/p/2461019.html
Copyright © 2011-2022 走看看