码迷,mamicode.com
首页 > 编程语言 > 详细

201301 JAVA 题目2-3级

时间:2016-08-17 21:04:25      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

请编写一个函数(允许增加子函数),计算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),明显的递归式。如果规模很大怕栈溢出的话,可以转化成迭代。不知道分析的对不对,仅供参考。

201301 JAVA 题目2-3级

标签:

原文地址:http://www.cnblogs.com/lydandan/p/5781784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!