上三角数字三角形(Java)

输入一个正整数n,输出具有n层的上三角数字三角形。

输入格式:
只有一个正整数n,1<=n<=100。

输出格式:
一个上三角数字三角形,每个数字占四个字符位置。

输入样例:
5

输出样例:
在这里插入图片描述

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int num=1 ;
        for (int i = 0; i < n ; i++) {
            for (int j = 0; j <n-i; j++) {
                System.out.printf("%4d",num++);
            }
            System.out.println();
        }
    }
}
### 蓝桥杯数字三角形问题的Java实现与解题思路 对于蓝桥杯中的数字三角形问题,核心在于找到从顶部到底部路径上数值之和最大的一条路线。此问题可以通过动态规划的方法高效求解。 #### 动态规划方法解析 考虑到每一步可以沿着左斜线或者右斜线下移,在遍历过程中记录到达当前位置时能够获得的最大累积值。通过自底向上更新的方式简化计算过程[^2]: - 对于最底层的数据保持不变; - 自倒数第二层起始逐层向前推进直至顶端; - 更新规则为当前节点加上其下方两个子节点中较大者的价值; - 最终位于顶层位置存储的就是所求的结果。 具体来说,状态转移方程如下所示: \[ dp[i][j]=triangle[i][j]+max(dp[i+1][j],dp[i+1][j+1]) \] 其中 \( triangle[i][j] \) 表示原始输入矩阵对应元素,而 \( dp[i][j] \) 则表示经过处理后的最优解表单相应位置上的数据[^3]。 下面是基于上述逻辑编写的完整代码片段: ```java import java.util.*; public class Main { public static void main(String[] args){ Scanner sc=new Scanner(System.in); int rows=sc.nextInt(); // 获取行数 List<List<Integer>> triagle = new ArrayList<>(); for(int i=0;i<rows;++i){ List<Integer> rowList = new ArrayList<>(); for(int j=0;j<=i;++j){ rowList.add(sc.nextInt()); } triagle.add(rowList); } // 初始化DP表格并填充最后一行 Integer[][] dp =new Integer[rows][]; for (int r = 0; r < rows; ++r) { dp[r] = Arrays.copyOf(triagle.get(r).toArray(new Integer[0]),triagle.get(r).size()); } // 倒序迭代除最后一行外的所有其他行 for (int r = rows - 2; r >= 0 ; --r) { for (int c = 0; c <= r; ++c) { dp[r][c] += Math.max(dp[r + 1][c], dp[r + 1][c + 1]); } } System.out.println(dp[0][0]); // 打印最终结果即最大总和 } } ``` 这段程序首先读取输入构建了一个二维列表形式的三角形结构`triagle`,接着创建同样大小但用于保存中间运算结果的数组`dp`.最后按照既定策略完成各阶段的状态转换直到得出全局最优解.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沫忆拾忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值