HDU 2577 How to Type

題目內容
題意:就是給你一個字符串,求出按鍵盤最少的次數是多少
有Caps Lock和Shift兩種轉換大小寫輸入的方式
我是用模擬的方法把所有的情況都列出,用這種方法可能的情況較多注意不要漏掉情況。
這個問題也可以用DP來解,下面這是別人的比較好的DP解法
DP解法

我的代碼:

#include<stdio.h>
#include<string.h>
int main()
{
    int t;
    scanf("%d",&t);getchar();
    while(t--)
    {
        char a[105];
        int i,j,len,sum=0,flag=0;
        gets(a);
        len=strlen(a);
        for(i=0;i<len;i++)
        {
            if(flag==0&&(a[i]>='A'&&a[i]<='Z'&&(a[i+1]>='a'&&a[i+1]<='z'||i==len-1)))
                sum+=2;
            else if(flag==0&&a[i]>='a'&&a[i]<='z')
            {
                sum+=1;
                flag=0;
            }
            else if(flag==0&&a[i]>='A'&&a[i]<='Z'&&a[i+1]>='A'&&a[i+1]<='Z')
            {
                sum+=3;
                flag=1;
            }
            else if(flag==1&&a[i]>='A'&&a[i]<='Z')
                sum+=1;
            else if(flag==1&&a[i]>='a'&&a[i]<='z'&&a[i+1]>='A'&&a[i+1]<='Z')
                sum+=2;
            else if(flag==1&&a[i]>='a'&&a[i]<='z'&&a[i+1]>='a'&&a[i+1]<='z')
            {
                sum+=1;
                flag=0;
            }
            else if(flag==1&&a[i]>='a'&&a[i]<='z'&&i==len-1)
                sum+=1;
        }
        printf("%d\n",sum);
    }
    return 0;
}
發佈了131 篇原創文章 · 獲贊 13 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章