机器人走格子

算法:机器人走格子

/*

  • 问题描述:
  • 机器人走格子
  • 有n行m列
  • 机器人在最左上角,只能向下或者向右走
  • 走到最右下角有多少种走法?
  • */

问题解法:
1.自顶向下:递归求解
2.自底向上:递推求解

问题分析:
从一行一列逐渐扩大范围找规律

边界条件:一行的情况与一列的情况走法都只有一种
求出递推式:f(x,y) = f(x-1)(y)+f(x)(y-1)

import java.util.Scanner;
public class Robet_step {
    
    
    //递归求解
    public static int solve(int x,int y){
    
    
        //边界条件
        if(x==1||y==1){
    
    
            return 1;
        }
        return solve(x-1,y)+solve(x,y-1);
    }
    //递推求解
    public static int solve1(int x,int y){
    
    
        //初始化
        int [][]dp = new int[x+1][y+1];
        for(int i=1;i<x+1;i++){
    
    dp[1][i]=1;}
        for(int i=1;i<x+1;i++){
    
    dp[i][1]=1;}
        //开始递推
        for(int i=2;i<=x;i++){
    
    
           for(int j=2;j<=y;j++){
    
    
               dp[i][j] = dp[i-1][j]+dp[i][j-1];
           }
       }
        return dp[x][y];
    }
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        
        int solve = solve(x, y);
        int solve1 = solve1(x,y);
        
        System.out.println(solve);
        System.out.println(solve1);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43713040/article/details/111146905