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

hdu 2577 How to Type

时间:2019-11-30 19:22:13      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:cap   pid   mem   min   show   namespace   style   次数   blank   

题目传送门

题目大意:输入 n 个字符串,仅包含大小写字母,问你最少需要多少步打完这个字符串。

解题思路:运用 dp 的思想,判断大写字母和小写字母。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int T,l,dp[110][2];
 4 string str;
 5 int main(void)
 6 {
 7     scanf("%d",&T);
 8     while(T--)
 9     {
10         cin>>str;
11         l=str.size();
12         memset(dp,0x3f,sizeof(dp));//初始化 dp 数组
13         dp[0][0]=0,dp[0][1]=1;//dp[0][0] 代表没有按下 capslock,dp[0][1] 代表按下了 capslock
14         for(int i=1;i<=l;i++)
15         {
16             if(str[i-1]>=A && str[i-1]<=Z)//如果是大写字母
17             {
18                 dp[i][1]=min(dp[i-1][0]+2,dp[i-1][1]+1);//当前有两种情况,一种是上一个没按 capslock 加上 2,因为要按下 capslock,另一种是上一个就按下了 capslock 所以就只用加上 1
19                 dp[i][0]=min(dp[i-1][1]+2,dp[i-1][0]+2);//同上所述,只不过变成没开 capslock
20             }
21             else//如果是小写字母
22             {
23                 dp[i][1]=min(dp[i-1][0]+2,dp[i-1][1]+2);//同上所述,开了 capslock 只不过要变成小写字母
24                 dp[i][0]=min(dp[i-1][1]+2,dp[i-1][0]+1);//同上所述,没开 capslock
25             }
26         }
27         printf("%d\n",min(dp[l][1]+1,dp[l][0]));//取这两种情况中按键盘次数最少的
28     }
29 }

 

hdu 2577 How to Type

标签:cap   pid   mem   min   show   namespace   style   次数   blank   

原文地址:https://www.cnblogs.com/ForeverOIer/p/11962838.html

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