当前位置: 代码迷 >> 综合 >> HDU 2577 How To Type DP
  详细解决方案

HDU 2577 How To Type DP

热度:36   发布时间:2024-01-20 20:37:47.0

哈哈~这题秒掉了,总的来说这些天的DP苦修还是有点成果的。哇哈哈哈。

做题过程大概是这样的,前几天看了下这题,完全不敢切,果断的没思路。今天再一看,在纸上用笔演练了下,发现基本上能推出公式了。呵呵,蛮好玩的么,DP,虽然只是道水题,但是也说明了我在进步啊~ 哈哈哈

#include<iostream>
#include<string>
#include<cstdio>
using namespace std;int min( int a,int b ){ return a<b?a:b; }int main()
{int T;scanf( "%d",&T );while( T-- ){char date[111];scanf( "%s",&date );int f[111][2];memset( f,0,sizeof(f) );f[0][1]=1;if( date[0]>='A' && date[0]<='Z' )f[0][1]+=1,f[0][0]+=2;elsef[0][1]+=2,f[0][0]+=1;for( int i=1;i<=strlen(date);i++ ){int low,high;if( date[i]>='A' && date[i]<='Z' )low=0,high=1;elselow=1,high=0;if( high ){f[i][1]=min( f[i-1][1]+1,f[i-1][0]+2 );f[i][0]=min( f[i-1][1]+2,f[i-1][0]+2 );}else{f[i][1]=min( f[i-1][1]+2,f[i-1][0]+2 );f[i][0]=min( f[i-1][1]+2,f[i-1][0]+1 );}}printf( "%d\n",min(f[strlen(date)-1][0],f[strlen(date)-1][1]+1) );}return 0;
}


  相关解决方案