題目描述:一大串英文就不說了,反正就是先輸入乙個大於零小於一百的數,然後迴圈,每一次都輸入乙個字串,判斷要鍵盤輸入這段字串需要敲幾次鍵盤。友情提示,鍵盤開始和結束的時候caps都是小寫狀態,我最後才看出來這事,我真想吐槽一句,你管他最後的狀態是啥有什麼用,,
注意:如果是單個的大寫字母,直接用shift就可以,不需要切換caps。用來計數的變數的清零的位置很重要。
個人想法:如果有連續的大寫且cap關閉時就要開cap,否則用shift,或者有連續的小寫且cap開啟時就要關cap,否則用shift(因為有兩個或兩個以上的字元為大寫與小寫需要轉化時,2個是臨界點,此時無論用shift還是cap都是一樣的次數,但是當數量增多時那麼cap次數就會更少)
一開始準備使用動歸的,就是先定義兩個陣列,然後全部清零,然後判斷第乙個字母的大小寫,如果是大寫,那無論以何種方式輸入第乙個字元所需要的都是兩次。然後再判斷後面字元的大小寫,用遞迴,但是敲出來**後發現,這玩意連樣例都不能過,索性直接放棄動歸了
**如下:
#include
#include
#include
using namespace std;
const int n = 110;
char s[n];
int main()
scanf("%d",&t);
while(t--)
scanf("%s",s);
int len = strlen(s);
int flag = 0;
for(int i=0; iif (s[i] >= 'a' && s[i] <= 'z')
if (flag == 0)
flag = 1;
else
if (flag == 1)
cnt++;
flag = 0;
printf("%d\n",cnt);
return 0;
簡單題 解題報告
給一顆 n le 80 節點的樹,開始所有節點都是白色,每個時間隨機染黑一條鏈,求把整棵樹染黑的期望時間,對 998244353 取模 考慮 min max 容斥 某集合 s 最後乙個點出現的期望時間為 max s 第乙個點出現的期望時間是 min s 則有 max s sum 1 min t 考慮...
石子問題解題報告
description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最...
Noip模擬題解題報告
題目鏈結 智子 cq07年省選題 區間dp 當i j時,子串明顯只需要塗色一次,於是f i j 1。當i j且s i s j 時,可以想到只需要在首次塗色時多塗一格即可,於是f i j min f i j 1 f i 1 j 當i j且s i s j 時,我們需要考慮將子串斷成兩部分來塗色,於是需要...