HDU 2577入力する方法

トピックポータル

効果の件名:入力したn個の文字列のみ大文字と小文字が含まれている、あなたは少なくとも、文字列を終了する必要がありますどのように多くの手順尋ねます。

問題解決のアイデア:使用DPの  思考、判断、大文字と小文字。

1の#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  INT T、L、DP [ 110 ] [ 2 ]。
4  文字列strの。
5  INTメイン(ボイド6  {
 7      のscanf(" %dの"、&T)。
8      一方(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          のためにINT Iは= 1 ; I <= L; I ++ 15          {
 16              IF(STR [I- 1 ]> = ' ' && STR [I- 1 ] <= ' Z ' )//大文字場合
 。17             {
 18である                  DP [I] [ 1 ] =分(DP [I- 。1 ] [ 0 ] + 2、DP [I- 1 ] [ 1 ] + 1 ); //現在2つのケースがあり、一つは為のプレスCapsLockキー、プレスCapsLockのプラス2ではない、他のIS CapsLockキーは、これだけと一緒に使用に押し付け1。
 19。                  DP [I] [ 0 ] =分(DP [I- 1 ] [ 1。 +] 2、DP [I- 1 ] [ 0 ] + 2 )。上述したが、CAPSLOCKに開放しないように//同じ
 20である             }
 21が             他//場合は小文字
で22              {
 23は                  DP [I] [ 1 ] =分(DP [I- 1 ] [ 0 ] + 2、DP [ I- 1] [ 1 ] + 2 ); //上、しかし開放CapsLockキーになることを小文字
 24                  DP [I] [ 0 ] =分(DP [I- 1 ] [ 1 ] + 2、DP [Iを- 1 ] [ 0 ] + 1 ); //上、オープンCAPSLOCKなかった
 25              }
 26である         }
 27          のprintf(" %のD \ N- "、分(DP [L] [ 1 ] + 1、DP [L] [ 0 ])); //両方の場合に数字キーパッドを少なくともを得る
 28      }
 29 }

 

おすすめ

転載: www.cnblogs.com/ForeverOIer/p/11962838.html