hdu 2577 how totype 記憶化遞迴

來源:互聯網
上載者:User

看了遞推的題解,感覺遞迴在這個時候有不少優勢了,雖然時間的差距還是有點

思路:對於每次搜尋到某個位置的時候,可能有兩個狀態,大寫開,大寫關,記錄下到達某個位置的兩個狀態的最優解。

注意大寫開的,最後還得+1,把它關了。

#include<stdio.h>#include<string.h>int visited[105][3];char s[105];int dfs(int ,int );int sl;int main(){int t;for(scanf("%d",&t);t;t--){scanf("%s",s);sl=strlen(s);memset(visited,-1,sizeof(visited));printf("%d\n",dfs(0,0));}return 0;}int dfs(int now,int caps){int k1,k2,k3,min;k1=k2=k3=min=0x7fffffff;if(visited[now][caps]!=-1)     return visited[now][caps];if(now==sl)if(caps) return 1;else return 0;if(s[now]>='A'&&s[now]<='Z')if(caps)//大寫開k1=1+dfs(now+1,caps);else {k2=2+dfs(now+1,caps);//用shiftk3=2+dfs(now+1,1);//開大寫}else {if(!caps)//大寫關k1=1+dfs(now+1,caps);else {k2=2+dfs(now+1,caps);//用shiftk3=2+dfs(now+1,0);//大寫關}}if(k1<k2) min=k1;else min=k2;if(k3<min) min=k3;visited[now][caps]=min;return min;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.