本文共 1074 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要生成一个N行的蛇形矩阵。蛇形矩阵是由1开始的自然数依次排列成一个三角形的结构,每一行的数字顺序在左右交替变化。
为了生成蛇形矩阵,我们需要了解以下规律:
具体步骤如下:
a(i) = 1 + (i-1)*i/2
。m = N - i + 1
。current = a(i) + (j-1)*i + (j-1)*j/2
,其中 j
从1到 m
。#include#include using namespace std;int main() { int n; scanf("%d", &n); for(int i = 1; i <= n; ++i) { int a = 1 + (i - 1) * i / 2; int m = n - i + 1; ostringstream oss; for(int j = 1; j <= m; ++j) { int current = a + (j - 1) * i + (j - 1) * j / 2; if (j != m) { oss << current << " "; } else { oss << current; } } cout << oss.str() << endl; } return 0;}
scanf
读取输入的正整数 n
。n
,处理每一行。a(i) = 1 + (i-1)*i/2
计算每一行的首元素。m = n - i + 1
,确定每一行的元素数量。这种方法通过直接计算每一行的数字,避免了复杂的数组操作,保证了高效性和正确性。
转载地址:http://jbgfk.baihongyu.com/