解读以下代码import java.util.Arrays; import java.util.Scanner; public class ex4 { public static void main(String[] args){ //获取数据 Scanner sc =new Scanner(System.in); System.out.println("请输入长和宽"); System.out.print("长:"); int m = sc.nextInt(); System.out.print("宽:"); int n = sc.nextInt(); //算法部分 int[] cur = new int[n]; Arrays.fill(cur,1); for (int i = 1;i < m;i++){ for(int j = 1;j < n;j++){ cur[j] += cur[j-1]; } } //输出结构 System.out.println("共有"+cur[n-1]+"种走法"); } }
时间: 2024-04-26 21:22:49 浏览: 140
java代码-import java.util.Scanner;
这段代码实现了一个经典的动态规划算法,来计算在一个 $m \times n$ 的方格中,从左上角走到右下角的所有可能的路径数目。具体实现方法是使用一个一维数组 cur 来存储当前到每个位置的路径数目,从左上角开始,不断更新 cur 数组,最终返回 cur[n-1] 即可。
代码的主要流程如下:
1. 通过 Scanner 类获取输入,即方格的长和宽。
2. 初始化一个长度为 n 的一维数组 cur,用来存储当前到每个位置的路径数目,并将其全部初始化为 1。因为对于第一行和第一列的任意一个方格,它们只有一条路径可以到达。
3. 从第二行第二列开始遍历每个方格,对于每个方格,计算其左边和上边的方格到达当前方格的路径总数,即 cur[j] = cur[j] + cur[j-1]。
4. 遍历结束后,cur[n-1] 即为从左上角到右下角的所有可能路径的总数。
需要注意的是,该算法的时间复杂度为 $O(mn)$,空间复杂度为 $O(n)$。
阅读全文