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

网站开发预算编制台州网络推广

网站开发预算编制,台州网络推广,网站意义,东营做营销型网站建设给定一个m行n列的矩阵,从左上角开始每次只能向右或者向下移动,最后到达右下角的位置,路径上的所有数字累加起来作为这条路径的路径和。求所有路径和中最小路径和。 输入格式: 首先输入行数m及列数n,接下来输入m行,每…

给定一个m行n列的矩阵,从左上角开始每次只能向右或者向下移动,最后到达右下角的位置,路径上的所有数字累加起来作为这条路径的路径和。求所有路径和中最小路径和。

输入格式:

首先输入行数m及列数n,接下来输入m行,每行n个数。

输出格式:

输出第一行为最小路径(假定测试数据中的最小路径唯一),第2行为最小路径和。

输入样例1:

4 4
1 3 5 9
8 1 3 4
5 0 6 1
8 8 4 0

输出样例1:

1 3 1 0 6 1 0 
12

问题分析

这是一个典型的路径规划问题,可以使用动态规划来解决。我们需要找到从矩阵左上角到右下角的最小路径和,并记录下这条路径。

在每个点上,我们只能向右或向下移动,因此到达位置 (i, j) 的路径只能来自于位置 (i-1, j)(上方)或位置 (i, j-1)(左方)。我们选择这两个来源中路径和较小的那个,然后加上当前位置的值,即可得到到达 (i, j) 的最小路径和。

解题思路

动态规划解法

我们定义:

  • dp[i][j] 表示从起点 (0, 0) 到达位置 (i, j) 的最小路径和
  • pace[i][j] 用于记录到达位置 (i, j) 的前一步是从哪个方向来的(0表示从上方,1表示从左方)

状态转移方程为:

dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + num[i][j]

边界条件:

  • dp[0][0] = num[0][0]
  • 对于第一行:dp[0][j] = dp[0][j-1] + num[0][j](只能从左侧来)
  • 对于第一列:dp[i][0] = dp[i-1][0] + num[i][0](只能从上方来)

计算完 dp 数组后,dp[m-1][n-1] 就是我们要求的最小路径和。

为了重建最小路径,我们使用 pace 数组记录每一步的选择,然后用栈存储从终点回溯到起点的路径,最后输出即可得到完整路径。

代码实现

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(bf.readLine());int m = Integer.parseInt(st.nextToken());int n = Integer.parseInt(st.nextToken());int[][] num = new int[m][n];for(int i=0;i<m;i++){st = new StringTokenizer(bf.readLine());for(int j=0;j<n;j++){num[i][j] = Integer.parseInt(st.nextToken());}}int[][] dp = new int[m][n];int[][] pace = new int[m][n];dp[0][0] = num[0][0];//初始化第一行和第一列for(int i=1;i<m;i++){dp[i][0] = num[i][0] + dp[i-1][0];pace[i][0] = 0;}for(int i=1;i<n;i++){dp[0][i] = num[0][i] + dp[0][i-1];pace[0][i] = 1;}//状态转移方程//dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + num[i][j];for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(dp[i-1][j]<dp[i][j-1]){dp[i][j] = dp[i-1][j] + num[i][j];pace[i][j] = 0;}else{dp[i][j] = dp[i][j-1] + num[i][j];pace[i][j] = 1;}}}//逆推路径Stack<Integer> temp = new Stack<>();int i=m-1,j=n-1;while (i>0||j>0){temp.push(num[i][j]);if(pace[i][j]==0) i--;else j--;}temp.push(num[0][0]);while (!temp.isEmpty()){System.out.print(temp.pop()+" ");}System.out.println();System.out.println(dp[m-1][n-1]);}
}

这种方法的时间复杂度为 O(m×n),空间复杂度也为 O(m×n),其中 m 和 n 分别是矩阵的行数和列数。 

http://www.dtcms.com/wzjs/513065.html

相关文章:

  • bootstrap宣传网站模板云客网平台
  • 宜兴做网站多少钱百度竞价ocpc
  • 网站制作推广需要多少钱seo有哪些经典的案例
  • 网站项目下载海外广告投放公司
  • 阳泉网站建设哪家便宜站长工具
  • WordPress 打赏插件指定关键词排名优化
  • 网站模板 介绍360安全网址
  • 有需要做网站的吗常见的网络营销方式有哪些
  • 青秀区网站建设东莞网络推广培训
  • 网站建设招标评分表拼多多seo是什么意思
  • 酒吧网站模板腾讯广告投放平台官网
  • 橙云 php网站建设广州seo优化排名公司
  • 现在帮别人做网站赚钱不中国关键词
  • 在某外国网站做代购百度电商平台app
  • 淘客联盟做任务网站网址大全浏览器下载
  • 什么网站可以申请做汉语老师成全视频免费观看在线看
  • 做网站没什么用啊老师别人强收录好的网站有哪些
  • 典型的b2b平台有哪些网站关键词排名优化方法
  • wordpress分享插件积分重庆seo研究中心
  • linux做网站服务器吗如何自己建立一个网站
  • 新手用什么框架做网站比较好短视频营销
  • 西宁做网站的工作室关键词采集软件
  • 深圳科技网站建设营销策略有哪些
  • 做h的动漫在线观看网站网站统计数据分析
  • 网站 建设平台分析互联网营销策划是做什么的
  • 建站技术搜狗推广登录平台
  • web开发培训长春seo按天计费
  • 哪个网站可以兼职做效果图建设网站推广
  • 免费做app的网站有哪些北京网优化seo公司
  • 门户网站建设的报价人际网络营销2900