码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2577 How to Type【DP】

时间:2015-02-22 12:14:00      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

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

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\n",ans);        
38     }
39 }
View Code

 

HDU 2577 How to Type【DP】

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4297350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!