机器人走方格

1.题目描述

有一个X*Y的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。
请设计一个算法,计算机器人有多少种走法。
给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。

2.分析图解

在这里插入图片描述

3.代码实现(两种方法 递归&迭代)

public class Demo15
{
	public static void main(String[] args)
	{
 		System.out.println(solve(5, 5));
    	System.out.println(solve1(5, 5));
	}

	//递归解法
	public static int solve(int x,int y)
	{
		if (x==1||y==1) return 1;
		return solve(x-1, y)+solve(x, y-1);
			
	}
	//迭代解法   m:行数  n:列数
	public static int solve1(int m,int n)
	{
		int[][] state=new int[m+1][n+1];
		for (int i = 1; i <=n; i++)
		{
			state[1][i]=1;//遍历第一行元素为1
		}
		for (int i = 1; i <=m; i++)
		{
			state[i][1]=1;//遍历第一列元素为1
		}
		for (int i = 2; i <=m; i++)
		{
			for (int j = 2; j <=n; j++)
			{
				state[i][j]=state[i][j-1]+state[i-1][j];
			}
		}
		return state[m][n];
	}
}

4.运行结果

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐