【NowCoder】机器人走方格

本文探讨了一个机器人在X*Y的网格中只能向右或向下行走的问题,从简单的例子开始分析,如1*1、1*2、2*2的方格,通过递推公式f(x , y) = f(x - 1, y) + f(x , y - 1)揭示解题思路,并提出使用递归或二维数组的递推方法来求解,特别关注于在保证x+y小于等于12的情况下计算走法数量。" 122671152,11409027,程序员相亲规划:7天7场约会的高效攻略,"['程序人生', '职场和发展']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  2. 一开始的时候很正常都是没有思路的,所以把问题想得很复杂那么但是越复杂的时候我们越需要冷静,这个时候我们就需要使用一些简单的例子帮助我们来分析问题,因为这些简单的问题在某些情况下可以把大的问题分解成更小的问题直到最后有了解决问题的方案

我们一开始可以画出一个1 * 1的方格,那么很容易观察得到只有一种走法,我们可以画出1 * 2, 2 * 1, 2 * 2的方格…

注意这里走的是格点!!!

1 * 1: 一种走法

1 * 2:一种走法

1 * n 都是1
在这里插入图片描述
2 * 1:一种走法
n * 1 都是1
在这里插入图片描述

2 * 2: 两种走法

在这里插入图片描述

当我们处于2 * 2的方格的时候我们可以往右走一个方格,那么此时我们处于两行一列的状态,我们也可以往下走一个方格那么我们处于一行两列的情况那么1 * 2与2 * 1的走法我们原来是知道的,所以把这两种走法加起来就得到了2 * 2 方格的走法

2 * 3::三种走法:
在这里插入图片描述

当我们处于2 * 2的方格的时候我们可以往右走一个方格,那么此时我们处于两行两列的状态,我们也可以往下走一个方格那么我们处于一行三列的情况那么2 * 2与1 * 3的情况我们原来是知道的,所以把这两种走法加起来就得到了2 * 3 方格的走法总共有3中走法

那么后面的例子也是这样来分析,这样我们分析出来f(x , y) = f(x - 1, y) + f(x , y - 1)(因为只能向右走和向下走)

所以我们可以使用递归的方式来解决这个问题,其次我们也可以使用递推的方式来解决,因为涉及到两个变量都在变化,使用一维的变量是不能够保存的,所以要使用二维的数据结构:二维数组来保存其中的临时的值, x 和 y确定一个值。

public class Robot {
   
   
    public int countWays(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值