• HDU 2577 How to Type【DP】


    题意:给出一个字符串,有大写有小写,问最少的按键次数。然后打字的这个人有一个习惯,打完所有的字之后,指示灯要关闭。

    dp[i][j]表示打到第i个字母,j有0,1两个值表示指示灯开或者关的状态

    然后就可以写出状态转移方程了,因为最后需要灯是灭的,所以最后在找最小值的时候,dp[len][1]需要加1

    又一次看的题解===go--go

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 using namespace std;
     6 
     7 int dp[200][2];
     8 char s[200];
     9 
    10 int main()
    11 {
    12     int ncase,i,len,ans;
    13     scanf("%d",&ncase);
    14     getchar();
    15     while(ncase--)
    16     {
    17         memset(dp,0,sizeof(dp));
    18         ans=0;
    19         gets(s+1);
    20         len=strlen(s+1);
    21         dp[0][0]=0;
    22         dp[0][1]=1;
    23         for(i=1;i<=len;i++)
    24         {
    25             if(s[i]>='A'&&s[i]<='Z')
    26             {
    27                 dp[i][1]=min(dp[i-1][1]+1,dp[i-1][0]+2);
    28                 dp[i][0]=min(dp[i-1][1]+2,dp[i-1][0]+2);
    29             }
    30             else
    31             {
    32                 dp[i][1]=min(dp[i-1][1]+2,dp[i-1][0]+2);
    33                 dp[i][0]=min(dp[i-1][1]+2,dp[i-1][0]+1);                
    34             }
    35         }
    36         ans=min(dp[len][0],dp[len][1]+1);
    37         printf("%d
    ",ans);        
    38     }
    39 }
    View Code
  • 相关阅读:
    mac 端口转发方案
    Js 函数
    for 循环语句 与 while 循环
    Javascript 基础2
    Javascript 基础 1
    设计模式学习(一)-概述
    java基础知识-对象和类
    java基础知识-(数组)
    Java面试-框架篇(SSM-SpringMVC)
    Java面试-框架篇(SSM-Mybatis)
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4297350.html
Copyright © 2020-2023  润新知