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

公司主营业务网站建设吴江网页制作

公司主营业务网站建设,吴江网页制作,工商局网站怎么做增项,下载网站怎么下载题目 给定一个二维数组matrix[][]#xff0c;一个人必须从左上角出发#xff0c;最终到达右下角#xff0c;沿途只可以向下或者向右走#xff0c;沿途的数字都累加就是距离累加和。返回最小距离累加和。 这道题中会采用压缩数组的算法来进行优化 暴力递归 暴力递归方法的整…题目 给定一个二维数组matrix[][]一个人必须从左上角出发最终到达右下角沿途只可以向下或者向右走沿途的数字都累加就是距离累加和。返回最小距离累加和。 这道题中会采用压缩数组的算法来进行优化 暴力递归 暴力递归方法的整体思路是根据小人所在的位置当前值通过向下传递向左走向右走来获取最终选择路径的最小值。 所以base case可以确定 如果小人走到了最后一行那么接下来就只能向下走。如果小人走到了最后一列那么接下来就只能向左走。如果小人走到了matrix[][]的最后一个格子返回当前值给上层做处理取最小值。否则既可以向左也走可以向右走并获取最小值。 所以暴力递归的方法就出来了。 public static int minPathSum1(int[][] matrix) {if (null matrix || matrix.length 0 || matrix[0] null || matrix[0].length 0) {return -1;}int row matrix.length;int col matrix[0].length;return process(row - 1, col - 1, 0, 0, matrix);}//返回 matrix[i...][j....] 位置的最小值。public static int process(int row, int col, int curRow, int curCol, int[][] matrix) {//当走到最后一个位置返回matrix中最后一个位置的值if (curRow row curCol col) {return matrix[row][col];}//走到最后一行只能往右走只能向右累加if (curRow row) {return matrix[curRow][curCol] process(row, col, curRow, curCol 1, matrix);}//走到最后一列只能向下走if (curCol col) {return matrix[curRow][curCol] process(row, col, curRow 1, curCol, matrix);}//否则可以向右走可以向下走进行累加。int curValue matrix[curRow][curCol];int p1 curValue process(row, col, curRow 1, curCol, matrix);int p2 curValue process(row, col, curRow, curCol 1, matrix);return Math.min(p1, p2);}动态规划 这道题的动态规划也不难给定的是一个二维数组matrix[][]每次行和列会进行变化可变参数,所以可以创建一个和matrix大小相等的dp[][]来存放每一步计算的值。 因为只可以向下走或向右走所以dp中任选一个格子的依赖是依赖自己的左侧的值和上面的值。其中dp中第一行的值只会依赖同行左侧的值dp中第一列的值只会依赖同一列上面的值。 所以先将dp中第一行和第一列的值填充好后其余的按照依赖关系填充即可完善dp表。 代码 public static int dp(int[][] matrix) {if (null matrix || matrix.length 0 || matrix[0] null || matrix[0].length 0) {return -1;}int row matrix.length;int col matrix[0].length;int[][] dp new int[row][col];dp[0][0] matrix[0][0];for (int i 1; i col; i) {dp[0][i] dp[0][i - 1] matrix[0][i];}for (int j 1; j row; j) {dp[j][0] dp[j - 1][0] matrix[j][0];}for (int i 1; i row; i) {for (int j 1; j col; j) {dp[i][j] Math.min(dp[i - 1][j], dp[i][j - 1]) matrix[i][j];}}return dp[row - 1][col - 1];}优化 动态规划方法中是创建了一个和matrix[][]大小相等的dp表通过填充dp表来完善的代码。 如果给定的matrix[][]太大了是不是我的dp表也要跟着很大并且在填充dp表时第三行依赖第二行的值第四行依赖第三行的值此时。第二行的值就已经没有用了不再需要它了所以是不是只需要一个跟matrix[][]中列的长度相等的一维数组arr[]就够了。 代码 public static int minPathSum2(int[][] matrix) {if (matrix null || matrix.length 0 || matrix[0] null || matrix[0].length 0) {return 0;}int row matrix.length;int col matrix[0].length;int[] arr new int[col];arr[0] matrix[0][0];//根据matrix第一行的值填充arrfor (int i 1; i col; i) {arr[i] arr[i - 1] matrix[0][i];}for (int i 1; i row; i) {arr[0] matrix[i][0];for (int j 1; j col; j) {//arr[j - 1] : 相当于我依赖的左边//arr[j] : 因为此时arr[j]的值还没修改还是上一行的值相当于自己的上面。 arr[j] Math.min(arr[j - 1], arr[j]) matrix[i][j];}}return arr[col - 1];}
http://www.dnsts.com.cn/news/190735.html

相关文章:

  • 深圳商城网站设计电话软件开发工程师英文
  • 给公司做企业网站建设门户网站培训通知
  • 网站建设350元做网站一般多少钱
  • 做药的常用网站有哪些论坛网站免费建设模板下载安装
  • 公司网站改版方案盛世平面设计网站中文
  • 美工素材网站有哪些有域名了网站怎么做
  • 地理云门户网站建设庆阳官网贴吧
  • 青岛做网站建设的公司排名企业营销策划书
  • 张店低价网站建设湖北广盛建设集团网站
  • c 网站开发框架做商城型网站
  • 商务网站开发实验电商平台代运营
  • 新手做网站看什么书4a网站建设公司
  • 平台型网站建设方案wordpress外网访问没模版
  • 百度收录最快的网站泰安集团网站建设地点
  • 青海市住房和城乡建设厅网站2018年主流网站开发语言
  • 网站正在建设中色免费开网店怎么开
  • 公众号开发者葫岛百度seo
  • 青岛网站推广招商是普通网站地图好还是rss地图好一点
  • 青锐成长计划网站开发人员杭州企业自助建站系统
  • 华为等五家公司南昌关键词优化平台
  • 茌平建设局网站开发一个小程序一般需要多少钱呢
  • 宣威市网站建设站酷网免费素材图库官网
  • 呼和浩特装修网站织梦网站怎么把index.html去掉
  • 娱乐网站 建站软件怎样制作网站
  • 百度网站收入天津 网站设计公司
  • 小型项目外包网站中国建筑网官网证书查询
  • 色块布局网站首页模板建筑培训课程有哪些
  • 网站建设方案的重要性青岛模板建站多少钱
  • 中华智能自建代理网站小程序开发定制开发
  • 博尔塔拉州大型网站建设普洱在百度上做网站的