新闻动态

你的位置:意昂体育 > 新闻动态 > C++ 练习真题- 蛇行矩阵

C++ 练习真题- 蛇行矩阵

发布日期:2025-07-30 10:15    点击次数:151
时间限制: 2s 内存限制: 128MB 提交: 24039 解决: 15768 题目描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入格式 本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 输出格式 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 代码 #includeiostream#...

时间限制: 2s 内存限制: 128MB 提交: 24039 解决: 15768

题目描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

输入格式

本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

输出格式

对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

样例输入

5

样例输出

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11

代码

#include<iostream>#include<vector>usingnamespace std;voidprintSnakeMatrix(int N){ vector<vector<int>> matrix(N);// 初始化第一列int first_col_value = 1;for (int i = ; i < N; i++) { matrix[i].push_back(first_col_value); first_col_value += i + 1; }// 填充每一行的后续元素for (int i = ; i < N; i++) {int diff = i + 2; // 初始差值为行号+2for (int j = 1; j < N - i; j++) { matrix[i].push_back(matrix[i].back() + diff); diff++; } }// 输出矩阵for (int i = ; i < N; i++) {for (int j = ; j < matrix[i].size(); j++) { cout << matrix[i][j];if (j != matrix[i].size() - 1) { cout << " "; } } cout << endl; }}intmain(){int N;while (cin >> N) {printSnakeMatrix(N); }return;}

输出结果

代码讲解

(1)初始化第一列:

第一列的值遵循特定规律:1, 2, 4, 7, 11, ...

每个值与前一个值的差递增:+1, +2, +3, +4,...

(2)填充每行后续元素:

每行的差值从行号+2开始递增

例如第0行差值从2开始,第1行从3开始,依此类推

(3)输出控制:

使用vector存储矩阵

精确控制输出格式,避免行尾多余空格

示例演示

以样例输入N=5为例:

(1)初始化第一列:[1, 2, 4, 7, 11]

(2)填充各行:

第0行:1 (+2)→3 (+3)→6 (+4)→10 (+5)→15

第1行:2 (+3)→5 (+4)→9 (+5)→14

第2行:4 (+4)→8 (+5)→13

第3行:7 (+5)→12

第4行:11

(3)输出结果与样例一致

优化说明

使用vector动态存储矩阵,适应不同N值

避免使用二维数组,节省空间

差值计算直接基于行号,效率高

输出格式严格控制,符合题目要求

C++基础教程合集

C++基础资料1、C++输出2、C++变量3、C++输入4、C++表达式5、IF判断语句6、IF应用7、WHILE循环语句8、FOR循环语句9、数组10、一维数组11、二维数组12、C++函数13、C++文件操作 - 写文件操作



上一篇:青否数字人“年中大促”!硬核福利买直播专业版,送跨境专业版!
下一篇:邦纳banner安全光栅接口模块IM-T-9A
TOP