码迷,mamicode.com
首页 > 其他好文 > 详细

最小路径(动态规划)

时间:2019-09-19 16:36:37      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:span   统计   out   highlight   new   import   app   port   class   

  • 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 来表示。

最小路径(动态规划)

标签:span   统计   out   highlight   new   import   app   port   class   

原文地址:https://www.cnblogs.com/smilexuezi/p/11550129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!