zoukankan      html  css  js  c++  java
  • CodeForces 180C Letter

    题意:给你一个序列,问你最小变几次使字符串变成前面为大写,后面为小写的字符串。

    思路:这是一个简单的选择字符串的每一位变还是不变(我个人还是认为之中dp有点偏向于暴力,主要在于dp方程的思考,对于dp的状态也很容易定义,就是长度和是否选择决定的dp的状态)

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+7;
    char a[maxn];
    int dp[maxn][2];
    
    int main()
    {
        while(~scanf("%s",a)){
            int len=strlen(a);
            memset(dp,0,sizeof(dp));
            if(a[0]>='A'&&a[0]<='Z')dp[0][1]=1;
            else dp[0][0]=1;
            for(int i=1;i<len;i++){
                if(a[i]>='A'&&a[i]<='Z'){
                    dp[i][1]=min(dp[i-1][0],dp[i-1][1])+1;
                    dp[i][0]=dp[i-1][0];
                }
                else{
                    dp[i][0]=dp[i-1][0]+1;
                    dp[i][1]=min(dp[i-1][1],dp[i-1][0]);
                }
            }
            printf("%d
    ",min(dp[len-1][0],dp[len-1][1]));
        }
        return 0;
    }
  • 相关阅读:
    jquery 初篇
    python作用域和js作用域的比较
    javascript作用域
    第三篇、dom操作续
    dom事件
    第二篇 dom内容操作之value
    第三篇、变量
    第二篇、常量
    Node.js
    测试用例
  • 原文地址:https://www.cnblogs.com/lalalatianlalu/p/8450420.html
Copyright © 2011-2022 走看看