题解 | #蛇形矩阵#

蛇形矩阵

https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

/** HJ35 蛇形矩阵
 * 描述:
 * 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
 * 例如,当输入5时,应该输出的三角形为:
 * 1 3 6 10 15
 * 2 5 9 14
 * 4 8 13
 * 7 12
 * 11
 *
 *
 * 输入描述:
 * 输入正整数N(N不大于100)
 *
 * 输出描述:
 * 输出一个N行的蛇形矩阵。
 *
 * 示例1
 * 输入:4
 *
 * 输出:1 3 6 10
 *      2 5 9
 *      4 8
 *      7
 */
import java.io.*;
public class Main {
    public static void main(String[] args)throws IOException {
        // 创建一个 BufferedReader 对象 br,用于从标准输入流读取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 用于存储读取的每一行数据
        String str;
        // 环不断读取输入,直到输入结束(即读取到 null)
        while ((str = br.readLine()) != null) {
            // 将读取的字符串转换为整数,存储在 num 变量中
            int num = Integer.parseInt(str);
            // 创建一个 StringBuilder 对象 sb,用于构建输出结果
            StringBuilder sb = new StringBuilder();
            for (int i = 1; i <= num; i++) {
                // 计算当前行的起始值,根据数学规律计算
                int start = (i - 1) * i / 2 + 1;
                int step = i + 1;
                // 开始内层循环,从 1 循环到 num-i+1
                for (int j = 1; j <= num - i + 1; j++) {
                    // 将当前起始值添加到 StringBuilder 中,并添加一个空格
                    sb.append(start).append(" ");
                    start += step;
                    step ++ ;
                }
                // 将当前行的最后一个空格替换为换行符
                sb.setCharAt(sb.length() - 1, '\n');
            }
            // 删除最后一个换行符,以便输出
            sb.deleteCharAt(sb.length() - 1);
            System.out.println(sb.toString());
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
12-10 15:21
华为-媒体院 算法 n*16 硕士985
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务