201301 JAVA 题目2-3级

题目描述

请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

输入描述:

输入两个正整数

输出描述:

返回结果

输入例子:
2
2
输出例子:
6

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args) {
 4       Scanner sc = new Scanner(System.in);
 5       while(sc.hasNext()){
 6           int n = sc.nextInt();
 7           int m = sc.nextInt();
 8           System.out.println(find(n, m));
 9       }
10 }  
11     public static int find(int n, int m){
12         if(n == 0 || m == 0)
13             return 1;
14         else
15             return find(n - 1, m) + find(n, m - 1); 
16     }   
17 }
View Code

 

f(n,m)表示n*m矩阵的走法,第一步可以往下走,走了之后矩阵变成(n-1)*m,也可以往右走,矩阵就变成n*(m-1),所以f(n,m)=f(n-1,m)+f(n,m-1),明显的递归式。如果规模很大怕栈溢出的话,可以转化成迭代。不知道分析的对不对,仅供参考。

posted @ 2016-08-17 20:28  蛋蛋的守护  阅读(244)  评论(0)    收藏  举报