最小路径(动态规划)

Posted smilexuezi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小路径(动态规划)相关的知识,希望对你有一定的参考价值。

  • 1.最小路径和(矩形)

给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。

注:你在同一时间只能向下或者向右移动一步

样例1:
1 3 1

1 5 1

4 2 1

输出:7

样例2:

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

输出:12

import java.util.Scanner;

public class Main 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int n = sc.nextInt();
		int temp[][] = new int[m][n];
		for(int i = 0; i < m; i++)
			for(int j = 0; j < n; j++)
				temp[i][j] = sc.nextInt();
			
		
		System.out.print(minpath(temp));
	
	
	public static int minpath(int a[][]) 
		
		if(a == null)
			return -1;
		
		int m = a.length;
		int n = a[0].length;
		int dp[][] = new int[m][n];
		dp[0][0] = a[0][0];
		for(int i = 1; i < m; i++)
			dp[i][0] = dp[i - 1][0] + a[i][0];
		
		for(int j = 1; j < n; j++)
			dp[0][j] = dp[0][j - 1] + a[0][j];
		
		for(int i = 1; i < m; i++)
			for(int j = 1; j < n; j++)
				dp[i][j] = Math.min(dp[i - 1][j] + a[i][j], dp[i][j - 1] + a[i][j]);
			
		
		return dp[m - 1][n - 1];		
	

 

  • 2.不同路径个数

给定一个m*n网格,统计从左上角到右下角的所有路径个数。

注:你在同一时间只能向下或者向右移动一步

样例1:

输入: m = 3, n = 2
输出: 3

import java.util.Scanner;

public class Main 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int n = sc.nextInt();
		int temp[][] = new int[m][n];
		System.out.print(countpath(temp));
	
	
	public static int countpath(int a[][]) 
		
		int m = a.length;
		int n = a[0].length;
		int dp[][] = new int[m][n];
		for(int i = 0; i < m; i++)
			dp[i][0] = 1;
		
		for(int j = 0; j < n; j++)
			dp[0][j] = 1;
		
		for(int i = 1; i < m; i++)
			for(int j = 1; j < n; j++)
				dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
			
		
		return dp[m - 1][n - 1];		
	

 给定一个m*n网格,统计从左上角到右下角的所有路径个数(考虑图中有障碍物)。

注:障碍物和无障碍物可以分别用 1 和 0 来表示。

以上是关于最小路径(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章

算法52-----矩阵最小路径动态规划

#动态规划 LeetCode 64 最小路径和

[编程题] lc 最小路径-动态规划

动态规划-64. 最小路径和

数据结构与算法动态规划——最小路径和(普通矩阵三角形两题)

数字三角形最小路径和—动态规划