Problem Description
Pirates have finished developing the typing software. He called Cathy to test his typing software. She is good at thinking. After testing for several days, she finds that if she types a string by some ways, she will type the key at least. But she has a bad habit that if the caps lock is on, she must turn off it, after she finishes typing. Now she wants to know the smallest times of typing the key to finish typing a string.
 
Input
The first line is an integer t (t<=100), which is the number of test case in the input file. For each test case, there is only one string which consists of lowercase letter and upper case letter. The length of the string is at most 100.
 
Output
For each test case, you must output the smallest times of typing the key to finish typing this string.
 
Sample Input
3
Pirates
HDUacm
HDUACM
 
Sample Output
8
8
8
由于这里有大写锁定开关两种状态 所以需要两个数组a b来进行dp
动态规划的问题实际上就是对多个子问题的优化处理问题 在考虑优化时 应该从一个子问题到下一个子问题的过程中找出所有可能的情况 并进行优化
 
#include<stdio.h>
#include<iostream>
#include<string.h>
int min(int x,int y)
{
 if(x>y) return y;
 else return x;
}
int f(char x)//1为大写
{
 if(x>='A'&&x<='Z') return 1;
 else return 0;
}
using namespace std;
int main()
{
    char s[130];
 int n,len,i,j,a[130];//开
 int b[130],t,mine;//关 a,b需要保证 其状态的变化量
 scanf("%d",&n);
 while(n--)
 {
  memset(a,0,sizeof(a));
  memset(b,0,sizeof(b));
  cin>>s;
  a[0]=1;
  len=strlen(s);
  for(i=0;i<len;i++)
  {
    if(f(s[i])==1)//da
    {
          a[i+1]=min(a[i]+1,b[i]+2);//开灯的话直接输入 关灯的话开灯在输入
    b[i+1]=min(a[i]+2,b[i]+2);// 开灯的话先输入再关 关灯的话按shitf在输入(这里可以开灯输入在关灯 但由于是找最少的次数 所以忽略)     
    } 
    else//xiao
    {
     a[i+1]=min(a[i]+2,b[i]+2);//开灯的话 按SHIFT输入 关灯的话 先输入在开灯(保证a数组的开灯状态)
     b[i+1]=min(a[i]+2,b[i]+1);//开灯的话  关灯再输入   关灯的话 直接输入
    }
  }
  a[len]++;// 最后不要忘了关灯
  mine=min(a[len],b[len]);
  cout<<mine<<endl;
 }
 return 0;
}

 

杭电2577 多数组dp问题的更多相关文章

  1. 杭电1466------简单的dp

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=1466 #include<iostream> #include<cstdio> # ...

  2. 最少拦截系统(杭电1257)(DP)+(贪心)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. 杭电hdu 2089 数位dp

    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍 ...

  4. 杭电dp题集,附链接还有解题报告!!!!!

    Robberies 点击打开链接 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和- 把状态转移方程写成了f ...

  5. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  6. 杭电ACM题单

    杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 1007 经典问题,最 ...

  7. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”

    按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...

  8. 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过

    杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...

  9. 杭电 1272 POJ 1308 小希的迷宫

    这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...

随机推荐

  1. iPhone 照片为heic格式怎么处理?

      解决办法: 永久解决:进入 相机设置 为 兼容模式即可 这样设置以后拍出来的就是jpg格式啦. 之前的heic的照片可以用,格式工厂 批量转化一下.   文章来源:刘俊涛的博客 欢迎关注公众号.留 ...

  2. 面邻域Polygon Neighbors

    面邻域Polygon Neighbors 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 功能: Polygon Neighbors Creat ...

  3. 在shell中判断hive查询记录数大小

     用途: 根据查询到结果数量来判断,是否需要再执行下个脚本. 1. 查询语句script.q脚本如下: ) as count from test; 2. shell脚本如下: 这里注意hive语句需要 ...

  4. Angular中使用ECharts图表

    1.安装: npm install echarts --save 2.在 TypeScript 文件中导入echarts import * as echarts from 'echarts'; 3.根 ...

  5. windows下安装anaconda和tensorflow

    anaconda确实很好用,省去了很多麻烦,现在我个人推荐直接使用anaconda. anaconda的特点:可以存在多个python环境,要使用某一个环境的话,就需要切换到这个环境,安装.卸载包都是 ...

  6. php 验证rsa公钥和私钥是否正确

    <?php /** * RSA加密 * * @param string $data 待加密数据 * @param string $publicKey 公钥 * @return string|fa ...

  7. Python基础教程(第2版 修订版) pdf

    Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41. ...

  8. Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据

    目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...

  9. 容器版Jenkins官方镜像 本身自带了 Java

    docker版Jenkins官方镜像 本身自带了 Java

  10. @PathVariable设置为空的问题(required=false)

    参考了:http://www.imooc.com/qadetail/268268 最近学习springMVC的时候,学到@PathVariable后,发现@PathVariable有个required ...