1Y
dp
两个状态capslock 1开or0关
#include<stdio.h>
#include<string.h>
int min(int a,int b){
if(a>b)return b;return a;
}
int dp[110][2];
int main(){
int t;
scanf("%d",&t);
while(t--){
char s[110];
scanf("%s",s);
int len=strlen(s);
int i;
dp[0][0]=0;dp[0][1]=1;
for(int j=0;j<len;j++){
i=j+1;
if(s[j]>='a'&&s[j]<='z'){
dp[i][0]=min(dp[j][0]+1,dp[j][1]+2);
dp[i][1]=min(dp[j][0]+2,dp[j][1]+2);
}
else {
dp[i][0]=min(dp[j][0]+2,dp[j][1]+2);
dp[i][1]=min(dp[j][1]+1,dp[j][0]+2);
}
}
printf("%d\n",min(dp[len][0],dp[len][1]+1));
}
return 0;
}
本文介绍了一个关于计算在给定字符串下切换CapsLock状态所需的最少按键次数的问题,并通过动态规划的方法给出了C语言实现方案。
348

被折叠的 条评论
为什么被折叠?



