这题使用动态规划来做,但是刚开始的时候一直超时,我以为是其他地方的原因,但是怎么改都有问题(代码如下)后来,我发现我这样做压根就不是动态规划啊,就是普通的递归,怪不得会超时·················动态规划与普通的递归的区别就是在于不要重复计算啊!!!!!
class Solution { public: int numDecodings(string s) { int len=s.size(); if(len==0||s[0]==‘0‘) return 0; int num; int res; if(len==1) num =s[0]-‘0‘; else if(len==2) num=10*(s[0]-‘0‘)+s[1]-‘0‘; if(num==0) return 0; else if(num<=10) return 1; else if(num>10&&num<=26) return 2; else if(num>26&&num<=99) return 1; res=max(numDecodings(s.substr(0,1))+numDecodings(s.substr(1,len)), numDecodings(s.substr(0,2))+numDecodings(s.substr(2,len))); return res; } };
http://blog.csdn.net/worldwindjp/article/details/19938131
时间: 2024-11-06 15:29:26