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

蛇行矩阵

题目描述

蛇形矩阵是由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
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;
}

亲测可用
蛇行矩阵 代码可以直接运行_第1张图片
蛇行矩阵 代码可以直接运行_第2张图片

你可能感兴趣的:(C)