一个n*n 的方格,要从左上角走到右下角,一次只能往右或往下走一步,求算法得出所有走动的方法数。
2018-04-06 14:47
681 查看
题目一:一个n*n 的方格,要从左上角走到右下角,一次只能往右或往下走一步,求算法得出所有走动的方法数。
分析:对于第(i,j)个格子,只有向右走一步到达或者向左走一步到达,dp(i,j) = d(i-1,j)+dp(i,j)。边界为:dp(1,j) = 1 , 1<=j <n , dp(i,1) = 1 , 1<=i<=m.
package april; import java.util.Scanner; /** * * @ClassName: Class_8 * @Description: 一个n*n 的方格,要从左上角走到右下角,一次只能往右或往下走一步,求算法得出所有走动的方法数。 * @author Smallji * @date 2018年4月6日 下午2:36:15 * */ public class Class_8 { public int count (int [][] arr) { int m = arr.length ; int n = arr[0].length ; int [][] result = new int[m] ; //内存迭代搜索 for(int index = 0 ; index<m ; index++) { result[index][0] = 1 ; } for(int index=0 ;index<n ; index++) { result[0][index] = 1 ; } for (int i =1 ; i< m ; i++) for (int j =1 ; j<n ;j++) { result[i][j] = result[i-1][j]+result[i][j-1]; } return result[m-1][n-1]; } public static void main(String[] args) { Scanner in = new Scanner(System.in) ; System.out.println("row: "); int m = in.nextInt() ; System.out.println("columns: ") ; int n = in.nextInt() ; int [][] rawArr = new int[m] ; for (int i=0 ; i<m; i++) for (int j=0 ; j<n ; j++) { rawArr[i][j] = in.nextInt() ; } Class_8 class8 = new Class_8() ; int count = class8.count(rawArr) ; System.out.println("count: " + count); in.close(); } }
题目二: 给出m*n个格子,每次只能向右走一步或者向下走一步,打印出所有路径;
题目三:一个n*n 的方格,要从左下角走到右上角,一次只能往右或往上走一步,求算法得出所有走动的方法数 ;
题目四 :一个n*n 的方格,要从左下角走到右上角,一次只能往右或往上走一步,打印所有路径 ;
题目五 :
相关文章推荐
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- asp实现限制一个ip只能访问一次的方法
- 牛客网 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- 翻转子串 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。
- 一组数据中只有一个数字出现了一次。 其他所有数字都是成对出现的。请找出这个数字(数组指针的方法)
- writeObject可以写n个,但是readObject()却只能读一次,你做一下测试。 如果你需要序列化好几个类的话,建议你用json;或者自己写两个方法,一个是将对象转换为字符串,一个是将字符串
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- 给你一个链表和一个 random函数, 设计一个算法能随机返回链表的某个节点, 要求每个节点被返回的概率一样。限制条件是只能遍历链表一次并且不能用额外空间。
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入 第一行只有一个正整数N(N<=
- debounce函数让一个方法在一定时间内只能执行一次
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- 给定两个有着相同长度且都在字典内的单词,要求写一个方法来把一个单词变型成另一个单词。 一次只能转换一个字母,且每次生成的单词必须在字典内
- Angular.js实现多个checkbox只能选择一个的方法示例
- 读入一个class文件,输出它的所有的字段、方法
- Template Method 在一个方法中实现一个算法,但是推迟定义算法中的某些步骤,从而使其他的类可以重新定义这些步骤
- java 一个用户在同一时间只能登录一次的绝佳解决方案
- C#之WinForm基础 得到文件对话框(一次只能打开一个文件)打开文件的绝对路径
- ceil细胞合并 每一秒一个细胞只能合并一次 求达到不可合并状态所需的秒数