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

关于文化馆网站建设的材料微信小程序登陆入口官网

关于文化馆网站建设的材料,微信小程序登陆入口官网,it外包企业排名,哪个网站能在线做司考题目java数据结构与算法刷题目录#xff08;剑指Offer、LeetCode、ACM#xff09;-----主目录-----持续更新(进不去说明我没写完)#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难#xff0c;但它就是固定套路而已。其实动态规划只…java数据结构与算法刷题目录剑指Offer、LeetCode、ACM-----主目录-----持续更新(进不去说明我没写完)https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难但它就是固定套路而已。其实动态规划只不过是将多余的步骤提前放到dp数组中就是一个数组只不过大家都叫它dp达到空间换时间的效果。它仅仅只是一种优化思路因此它目前的境地和线性代数一样----虚假的难。 想想线性代数在国外留学的学生大多数不觉得线性代数难理解。但是中国的学生学习线性代数时完全摸不着头脑一上来就是行列式和矩阵根本不知道这玩意是干嘛的。线性代数从根本上是在空间上研究向量抽象上研究线性关系的学科。人家国外的教科书都是第一讲就帮助大家理解研究向量和线性关系。反观国内的教材直接把行列式搞到第一章。搞的国内的学生在学习线性代数的时候只会觉得一知半解觉得麻烦完全不知道这玩意学来干什么。当苦尽甘来终于理解线性代数时干什么的时候发现人家国外的教材第一节就把这玩意讲清楚了。你只会大骂我们国内这些教材什么狗东西以上是自己学完线性代数后的吐槽我们同学无一例外都这么觉得。 而我想告诉你动态规划和线性代数一样我学完了才知道它不过就是研究空间换时间提前将固定的重复操作规划到dp数组中而不用暴力求解从而让效率极大提升。 但是网上教动态规划的兄弟们你直接给一个动态方程是怎么回事和线性代数一上来就教行列式和矩阵一样纯属恶心人。我差不多做了30多道动态规划题目才理解动态方程只是一个步骤而已而这已经浪费我很长时间了我每道题都一知半解不理解过程及其痛苦。最后只能重新做。动态规划一定是优先考虑重复操作与dp数组之间的关系搞清楚后再提出动态方程。而你们前面步骤省略了不讲一上来给个方程不是纯属扯淡吗我推荐研究动态规划题目按5个步骤从上到下依次来分析 DP数组及下标含义递推公式dp数组初始化数组遍历顺序双重循环及以上时才考虑dp数组打印分析思路是否正确相当于做完题检查一下 这道题是62题的衍生题在62题的基础上增加了一个条件就是路上会有障碍物导致涉及这个障碍物的路无法通行。对应到代码就是加了一个if语句罢了。除此之外没有任何不同 可以先参考LeetCode62. 不同路径https://blog.csdn.net/grd_java/article/details/135421514 先理解题目细节 机器人只能向右或向下走也就是说我们到达每一个方格只有两种情况从上面过来的或者从左面过来的。注意区分“走过去”和“从哪过来的区别”这是解出这道题的关键。所以与其考虑到达终点有几条路可以走不如考虑到这个位置可以从哪里来。要特别注意第一行和第一列如果到某个位置的中间有障碍物那么就只能是0. 因为第一行和第一列没有障碍物的情况下也只有一条路可以到达如果中间堵了肯定就到不了。 解题思路 暴力求解的思想就是回溯算法枚举每一种情况拿到最大值显然会做大量无效运算。但是如果我们预先将其存储到dp数组就可以直接通过dp[x], 获取dp数组中指定位置x的体力花费而不用枚举。典型的动态规划题目 动态规划思考5步曲 DP数组及下标含义 我们要求出的是到达某个方块可以从哪里过来过来的方法有几种那么dp数组中存储的就是到达这里有几种方法可以过来。要求出谁的可到达方法的数量呢显然是某个方块那么下标就是代表现在到了哪个方块也就是代表到了某一方块后的可以过来的路。显然需要2个下标表示故这道题的dp数组需要二维数组 递推公式 由题意可知只能选择向右走或者向下走因此对于每个方块而言只能是从上面过来或者从左面过来。而第一行没有从上面来的路因此只能从左面过来也就是第一行都只有一条从左面来的路没有障碍物的情况下都是1。同理第一列没有从左面来的路只能从上面过来没有障碍物的情况下也只有从上面过来这一条路。 故第一行和第一列没有障碍物情况下都固定为1F(0,n) 1; F(n,0) 1如果有障碍物说明这条路不通只能是0. 我们只需要看前一个位置通不通就能判断当前位置通不通。F(0,n) f(0,n-1)0?0:1. F(n,0) f(n-1,0)0?0:1. 之后每一个方块都需要考虑从上面来的路有几条从左面来的路有几条。也就是到它上面的方块有几条路到它左面的方块有几条路因此可以得到从第二行第二列开始递推公式变为到左边方块的路到上面方块的路。F(n,n) F(n-1,n)F(n,n-1) dp数组初始化 数组遍历顺序 双重循环我们知道这道题数组下标表示方块的位置也就是所在行和列的位置。那么其中一层循环代表第几行另外一层循环代表第几列。那么先遍历行还是列呢我们发现无论遍历哪个都不影响。我们可以一列一列考虑也可以一行一行考虑因此先遍历哪个都一样。我们这里选择先遍历行。 打印dp数组自己生成dp数组后将dp数组输出看看是否和自己预想的一样。 代码:时间复杂度O(mn).空间复杂度O(mn) class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length, n obstacleGrid[0].length;//获取行和列//dp数组代表我们站在哪个方格上存储的元素值是当前我们站着的方格可以从起点走哪几条路过来下标代表是哪个方格int dp[][] new int[m][n];for(int i 0 ;im;i){//外循环代表 方格所在行for(int j 0;jn;j){//内循环代表 方格所在列if(obstacleGrid[i][j] 1) dp[i][j]0;//如果当前位置是障碍物那么我们就无法站在这个位置上也就没有路可以到达它else if(i0||j0) {//如果是第一行或者第一列则最多只有一条路可以到达//只有一条路如果这条路有障碍物必定到不了它if(j0dp[i][j-1]0)dp[i][j]0;//如果在第一行当前位置的左边[i][j-1]位置为0表示左边的位置就已经被障碍物堵住了路else if(i0dp[i-1][j]0)dp[i][j]0;//如果在第一列上面位置[i-1][j] 0, 表示上面就已经被障碍物堵住了路else dp[i][j] 1;//如果第一行或者第一列它们那唯一的一条路到这个位置没有障碍物就表示有一条路可以到达它}else{//其它位置的路为它上面位置有几条路可以到它左边位置有几条路可以到达它dp[i][j] dp[i-1][j]dp[i][j-1];}}}return dp[m-1][n-1];//返回到终点有几条路可以到达} }
http://www.zqtcl.cn/news/365540/

相关文章:

  • 免费学软件的自学网站江阴建设局网站
  • 网站做多久苍南县网站集约化建设
  • 深圳电子烟网站建设罗湖建设公司网站建设
  • 酒店 深圳 网站建设新项目首码对接平台
  • 岳阳市住房和城乡建设局网站上海专业网站建设网
  • 营销型网站建设设定包括哪些方面网站建设后的心得
  • 建立网站来网上销售的英文潢川城乡建设局网站
  • 仿站建站教程网站怎么接广告
  • 免费下载代码项目的网站长春网站建设找新生科技
  • 博兴县建设局网站做网站要用什么服务器吗
  • 成都中小企业网站建设公司怎么挑选网站建设公司
  • 万源网站建设在ppt里面做网站链接
  • 做网站时怎么添加动态信息中铁航空港建设集团网站
  • 文化礼堂建设情况网站网站建设运行
  • 自己做网站很难asp网站开发四酷全书:新闻_论坛_电子商城_博客
  • 网站建设入什么会计科目从网络安全角度考量请写出建设一个大型电影网站规划方案
  • 品牌建设+网站网站建设 淘宝客末班
  • 建设商业网站学校建设门户网站的好处
  • 男女朋友在一起做那个的网站公司建设网站
  • 营销型网站的类型有哪些相册网站怎么做
  • 河南建设监理协会网站电话erp管理系统官网
  • 视频网站seo实战做企业网站一般用什么服务器
  • icp备案 网站负责人免费直播sdk
  • 网站制作和如何推广动画专业学什么
  • 北京一家专门做会所的网站基于ssh框架的网站开发流程
  • 可以在自己的电脑上做网站吗陕西商城网站建设
  • 深圳网站建设工作室郴州有什么好玩的地方
  • 用dw做的网站怎么发到网上竹妃怎么在公众号里做网站
  • 杭州网站优化搜索黑龙江公共资源交易网官网
  • 动易网站 首页模板修改平台网站是什么