杨辉三角--java语言

java语言实现的杨辉三角

package com.exer;
/*
 * 杨辉三角
 */
public class yangHui {
	public static void main(String[] args) {
		//声明二维数组:10行
		int[][] yangHui = new int [10][];
		
		//先将列层数组在栈中new出对象,然后才能使用
		//给每一行开头和结尾赋值
		for(int i = 0;i < yangHui.length;i++){
			yangHui[i] =new int[i+1];
			yangHui[i][0] = yangHui[i][i] = 1;
		}
		
		//每一维开头和结尾数值为1,其它的为垂直上方元素与垂直上方元素左边元素之和
		for(int i = 2;i < yangHui.length;i++){
			for(int j = 1;j < yangHui[i].length - 1;j++){
				//给每一行中间元素赋值
				yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
			}		
		}
		//打印每一行元素
		for(int i = 0;i < yangHui.length;i++){
			for(int j = 0;j < yangHui[i].length;j++)
				System.out.print(yangHui[i][j] + " ");
			System.out.println();
		}
			
			
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Java语言实现杨辉三角形求路径的代码: ```java import java.util.ArrayList; import java.util.List; public class PascalTriangle { public static List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle = new ArrayList<>(); if (numRows == 0) { return triangle; } // 第一行 triangle.add(new ArrayList<>()); triangle.get(0).add(1); for (int rowNum = 1; rowNum < numRows; rowNum++) { List<Integer> row = new ArrayList<>(); List<Integer> prevRow = triangle.get(rowNum - 1); // 第一个元素 row.add(1); // 中间元素 for (int j = 1; j < rowNum; j++) { row.add(prevRow.get(j - 1) + prevRow.get(j)); } // 最后一个元素 row.add(1); triangle.add(row); } return triangle; } public static List<Integer> getPath(List<List<Integer>> triangle, int row, int col) { List<Integer> path = new ArrayList<>(); if (triangle == null || triangle.size() == 0) { return path; } for (int i = 0; i < triangle.size(); i++) { List<Integer> currRow = triangle.get(i); if (i == 0) { path.add(currRow.get(0)); } else { List<Integer> prevRow = triangle.get(i - 1); int left = col - 1 < 0 ? Integer.MAX_VALUE : prevRow.get(col - 1); int right = col >= currRow.size() ? Integer.MAX_VALUE : prevRow.get(col); if (left < right) { col--; } path.add(currRow.get(col)); } } return path; } public static void main(String[] args) { int numRows = 5; List<List<Integer>> triangle = generate(numRows); for (int i = 0; i < triangle.size(); i++) { for (int j = 0; j < triangle.get(i).size(); j++) { System.out.print(triangle.get(i).get(j) + " "); } System.out.println(); } int row = 3; int col = 1; List<Integer> path = getPath(triangle, row, col); System.out.println("Path: " + path); } } ``` 该程序首先生成一个杨辉三角形,然后通过 `getPath()` 方法获取指定位置的路径。在 `getPath()` 方法中,我们遍历每一行并计算出路径。由于每个数字只依赖于上一行的两个数字,因此我们可以根据上一行的值来计算出当前行的值。使用这种方法,我们可以在不存储整个三角形的情况下找到路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值