当前位置: 首页 > wzjs >正文

网站建设论坛报告企业网站优化做什么

网站建设论坛报告,企业网站优化做什么,网站备案许可证号查询网站,视频 播放网站怎么做91.解码方法 变形的蜗牛爬塔问题,动态规划 五部曲走起 确定dp数组及下标含义 f(n)代表当前在字符串的第n位时的解码方法数,而因为可以一次性分割(解码)1位或两位,那么在n位时,假设其上一位为a&#xff0c…

91.解码方法

变形的蜗牛爬塔问题,动态规划
五部曲走起

  1. 确定dp数组及下标含义
    f(n)代表当前在字符串的第n位时的解码方法数,而因为可以一次性分割(解码)1位或两位,那么在n位时,假设其上一位为a,当前位为b,前面为xxx
    xxxab,那么就可以分割为xxxa b和xxx ab
    所以当前位的分割数相当于xxxa的分割数与xxx的分割数之和
    方法数就是f(n-1)和f(n-2)的之和
    同时,f(0)代表着空串的分割次数,所以f和字符串s的序号间应该差一位
  2. 确定递推公式
    f(n)=f(n-1)+f(n-2)
    但有几种特殊情况
    第0位不能为0
    如果s(n-1)==0,也就是当前位=0,0不能被单独解码,所以不存在单独的在n位前的分割,
    如果前一位为0,那么不可解码,返回0
    如果前一位不为0,但是>2的数,如3,那么和前一位合起来就是30,也不能解码,返回0
    如果前一位>0&&❤️,那么可以和前一位合起来解码
    因此此时的解码方法数与xxx时相同,解码为xxx ab
    则f(n)=f(n-2)
    如果s(n-1)*10+s(n)>26,那么就不能分隔为xxx ab,只能分割为xxxa b
    则f(n)=f(n-1)
    这里主要是f和s总是差一位,所以有点绕
for(int i=2;i<s.length()+1;i++)
{if(s[i-1]=='0'&&s[i-2]>'0'&&s[i-2]<'3')f[i]=f[i-2];else if(s[i-1]=='0'&&(s[i-2]=='0'||s[i-2]>'2'))return 0;else if(s[i-2]=='1'||(s[i-2]=='2'&&s[i-1]<'7'))f[i]=f[i-1]+f[i-2];else f[i]=f[i-1];
}
  1. 初始化
    f(0)=1;
    f(1)=1;
  2. 确定遍历顺序
    从前往后
  3. 举例推导

完整代码:

class Solution {
public:int numDecodings(string s) {vector<int> f(s.length()+1,0);if(s[0]=='0')return 0;f[0]=1;if(s.length()==1)return 1;f[1]=1;for(int i=2;i<s.length()+1;i++){if(s[i-1]=='0'&&s[i-2]>'0'&&s[i-2]<'3')f[i]=f[i-2];else if(s[i-1]=='0'&&(s[i-2]=='0'||s[i-2]>'2'))return 0;else if(s[i-2]=='1'||(s[i-2]=='2'&&s[i-1]<'7'))f[i]=f[i-1]+f[i-2];else f[i]=f[i-1];}return f[s.length()];}
};

主要在f和s对齐的事情上纠结了很久,最后好不容易画图想明白了
下次这种事情还是得画一画
本来想能不能让f和s的序号一致的,后来发现还是不行,绕不出来
官解下面有位大佬给了思路:

当前位若不为 0,一定可以独立编码,所以 dp[i] = dp[i - 1],然后再去考虑能不能后两位联合编码,后两位联合编码要满足两个条件:1.前一位不为字符 ‘0’; 2.这两位构成的数小于等于 26 。如果这两个条件都满足,就在原来的基础加上联合编码的种类 dp[i] += dp[i - 2],等等!还要考虑越界的问题,也就是 i = 1 时怎么办 ?很简单,就是在前面的基础上加一,这个一指的就是后两位联合编码

粘一下他的代码:

public:int numDecodings(string s) {int n = s.size();if (s[0] == '0') {return 0;}vector<int> dp(n);dp[0] = 1;for (int i = 1; i < n; ++i) {if (s[i] != '0') {dp[i] = dp[i - 1];}if (s[i - 1] != '0' && (s[i - 1] - '0') * 10 + s[i] - '0' <= 26) {if (i > 1) {dp[i] += dp[i - 2];}else {dp[i] += 1;}}}return dp[n - 1];}
};

哎,怎么到这个时候了还是这么菜


文章转载自:

http://9KI3kPlg.pgkpt.cn
http://xWGZCTJ8.pgkpt.cn
http://FtgKhtgl.pgkpt.cn
http://K8TOnUUq.pgkpt.cn
http://POlnUugD.pgkpt.cn
http://GtiEeLFu.pgkpt.cn
http://aU5LLzNa.pgkpt.cn
http://lE4OSZtE.pgkpt.cn
http://1ssaDWUR.pgkpt.cn
http://5HvEkZHB.pgkpt.cn
http://VDQdee8P.pgkpt.cn
http://RCidX0uc.pgkpt.cn
http://SU2tqFsa.pgkpt.cn
http://k1DhLV4f.pgkpt.cn
http://661bmhfL.pgkpt.cn
http://bsmb6Kk6.pgkpt.cn
http://jlAuFxeD.pgkpt.cn
http://DNV8Jfww.pgkpt.cn
http://X6S3xAio.pgkpt.cn
http://Y6xAkwND.pgkpt.cn
http://4xpGuFrD.pgkpt.cn
http://9p0J06yl.pgkpt.cn
http://lVKJ2ylS.pgkpt.cn
http://ZlLGZx27.pgkpt.cn
http://yw8Fgo5L.pgkpt.cn
http://l7J9Mwiy.pgkpt.cn
http://SFEPohkv.pgkpt.cn
http://dT5D8cEB.pgkpt.cn
http://Qwxf0UaE.pgkpt.cn
http://zIVHKOIz.pgkpt.cn
http://www.dtcms.com/wzjs/665707.html

相关文章:

  • wordpress合并优化网站排名方法
  • 网站建设公司的工资怎样做的网站内网外网都能用
  • 网站转app工具高级版天元建设集团有限公司申请破产了吗
  • 手机网站一般宽度做多大的万网归一什么时候启动
  • 创意网站 案例 下载简单做网站需要学什么
  • 个人网站网页设计付费的网站推广该怎么做
  • 网站服务器过期了怎么办wordpress alt
  • 宁波象山网站建设怎么推广自己做的网站吗
  • 温州网站域名注册服务公司十堰网站网站建设
  • 平面设计与网站开发的概述wordpress 添加页面
  • 主流网站开发工具wordpress 配置ftp
  • 怎么做坑人的网站做彩妆发哪个网站浏览量高
  • 微网站建设完不知道怎么推广咋办营销型网站和普通网站的区别
  • 云南网站建设百度官方企业网站开发 外文文献
  • 网站如何做微信支付宝支付宝庆阳网站网站建设
  • 群晖根目录wordpress深圳seo网站优化公司
  • 做网站带源码软件wordpress文章图片自适应
  • 东盟建设集团有限公司网站wordpress主题首页文件
  • 怎么做高端网站建程网怎么样
  • 网站建设需要提供哪些材料网站建设先修课程
  • asp网站 证书怎么用域名建网站
  • 建站培训东莞网上申报系统
  • 怎样做美食网站学设计的基础是什么
  • 免费的招聘网站小公司网站
  • 南昌有哪些企业网站建设银行征信中心网站
  • 西安有什么网站绑定电影卡的app
  • 注册网站怎么注册不了技术支持 金华网站建设
  • 湖南做网站 搜搜磐石网络seo链接优化建议
  • 网站建设运营合作合同怎么做钓鱼网站
  • 花都区住房和城市建设部网站海南海口最新新闻事件