算法设计(动态规划):机器人路径规划(JAVA代码实现及题目分析)

  • Post author:
  • Post category:java




机器人路径规划



题目内容:

一个机器人只能向下和向右移动,每次只能移动一步,设计一个算法求机器人从(0,0)到(m,n)有多少条路径。


输入格式:

以空格分开m,n


输出格式:

路径条数


输入样例:


4 5


输出样例:


35

这个题还是蛮简单的,不过需要注意的一点是这个题目有点问题,它题目给出的(m,n)在数组里是指[m-1][n-1],不信的你可以自己在纸上演算一下,确实是题目这里没有说清楚。因为我们第一眼都会认为是类似于坐标系一样的,也就是从数组的[0][0]到[m][n]。我第一次运行程序的时还惊了一下,想着这么简单的题还能写错,后来动笔算了一下才发现是题目的问题(NMD。。。)。其他的也不说了,毕竟我的代码一般需要解释的地方都有注释。

具体实现代码如下:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) 
    {
    	Scanner input=new Scanner(System.in);
    	int x=input.nextInt()+1;
    	int y=input.nextInt()+1;
    	print(x,y);
    }
    public static void print(int x,int y)
    {
    	int L[][]=new int [x][y];
    	//进行初始化//可以不用这样设定,但是我个人习惯上将边界定为0
    	for(int i=0;i<x;i++)
    	{
    		L[i][0]=0;
    	}
    	for(int i=0;i<y;i++)
    	{
    		L[0][i]=0;
    	}
    	for(int i=1;i<x;i++)
    	{
    		for(int j=1;j<y;j++)
    		{
    			L[i][j]=1;
    		}
    	}
    	//
    	for(int i=2;i<x;i++)
    	{
    		for(int j=2;j<y;j++)
    		{
    			L[i][j]=L[i-1][j]+L[i][j-1];//中间部分到每个点都有两条路可走
    		}
    	}
    	System.out.print(L[x-1][y-1]);
    }

}



版权声明:本文为yingYing_monster原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。