机器人走方格
有一个x*y的网格,机器人只能往下或者往右走,请问机器人从左上角走到右下角,试问机器人一共有多少种走法?
方法1:递归法
表达式:f(x,y) = f(x-1,y) + f(x, y-1) ;
import java.util.Scanner;
public class Robot {
public static int f(int x, int y){
if(x == 1 || y == 1){
return 1 ;
}
return f(x-1, y) + f(x, y-1) ;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in) ;
int x = input.nextInt() ;
int y = input.nextInt() ;
System.out.println(f(x,y)) ;
}
}
递推法:
状态表达式:state[i][j] = state[i][j-1] + state[i-1][j] ;
import java.util.Scanner;
public class Robot {
public static void f(int x, int y){
int [][] state = new int [x+1][y+1] ;
for(int i=1; i<=x; i++){
state[i][1] = 1 ;
}
for(int i=1; i<=y; i++){
state[1][i] = 1 ;
}
for(int i=2; i<=x; i++){
for(int j=2; j<=y; j++){
state[i][j] = state[i][j-1] + state[i-1][j] ;
}
}
System.out.println(state[x][y]) ;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in) ;
int x = input.nextInt() ;
int y = input.nextInt() ;
f(x, y) ;
}
}