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

晋江外贸网站开发优秀软文范例100字

晋江外贸网站开发,优秀软文范例100字,wordpress主题很卡,中国工程交易中心网给定一个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/477998.html

相关文章:

  • 微信微博网站建设seo英文
  • 上海优化网站方法腾讯广告
  • ai效果图网站百度关键词价格
  • 建设部网站建造师公示网站推广怎么写
  • 做网站那几步百度网盘网页版登录
  • 无锡论坛网站制作广州网站推广联盟
  • php怎么做多个网站宣传网站有哪些
  • 九亿app开发公司seo关键词排名优化是什么
  • 做网页去哪些网站找素材较好广告联盟官网入口
  • 做网站涉及个人隐私如何在百度上发布自己的广告
  • 淘宝网网站开发部技术部大地seo
  • 永川网站建设公司百度新站关键词排名
  • 成都网站建设招聘百度搜索指数查询
  • 直销网站开发站长统计官方网站
  • 网站建设价钱百度收录提交申请网站
  • 课件ppt免费下载深圳seo优化
  • 宝鸡企业网站建设老域名购买
  • 西安网站建设 盈科seo网站关键词优化软件
  • 婚介网站建设百度的网址是什么
  • 大流量ip网站怎么做文案短句干净治愈
  • 东莞做微网站建设价格百度电脑端入口
  • admin网站管理系统怎么做广州aso优化公司 有限公司
  • 德阳高端网站建设百度收录网址
  • 校体育网站建设的好处seo主要做哪些工作
  • 阿瓦提网站建设推广引流图片
  • 茶叶网站建设方案免费网站软件
  • 三农建设委员会官方网站it教育培训机构排名
  • 网页设计心得体会总结seo搜索优化技术
  • 毕业答辩ppt模板免费下载 素材网络seo首页
  • 公司支付网站款做凭证app开发需要哪些技术