蛇行矩阵 代码可以直接运行

150 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

蛇行矩阵

题目描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 样例输入: 5 样例输出: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11

解题思路

首先确定每一行的首个字母,根据样例1 2 4 7 11 可以得知,第一行的首个数字的1,第二行的首个数字在第一行的首个数字基础上加一,第三行的首个数字在第二行的首个数字上加二,依次类推。第n行的首个数字等于第n - 1行首个数字 + n - 1。 a(n) = a(n - 1) + n - 1。 其次确定每一行的各个相邻的数字之间的关系: 1 ( + 2) 3 ( + 3) 6 ( + 4) 10 ( + 5) 15 2 (+3) 5 (+4) 9 (+5) 14 4 (+4) 8 (+5) 13 7 (+5) 12 11 首先看每一行之间的关系,两个数之间的差值逐次增一。 其次确定第一次要增加的数值,通过上面的例子可以看出首次增加的数值是其所在行数加一。如该行是第3行,则首个增加的数值为3 + 1,即首次增加4。

源代码

#include<stdio.h>
int main()
{
 int n;           //获取用户输入的行数
 scanf("%d", &n);
 int row = 1;
 int number = 1;   //用于每行的首个数字的确定
 for (int i = n; i > 0; i--)      //行的控制
 {
  int first;
  first = number;    //首行数字
  int count = 1;  //每行中的相邻数字之间的差的控制
  for (int j = i; j > 0; j--)   //每行中的数字个数的控制
  {
   printf("%d ", first);
   first = first + row + count;    
   count++;
  }
  number = number + row;  //每行的首个数字
  printf("\n");
  row++;   //用于相邻行的首个数字的控制
 }
 return 0;
}

亲测可用,代码可直接运行。 答案仅供参考。

image.png

image.png

image.png