C语言算法(1)-蛇形矩阵

时间:2021-11-10 02:05:25

题目来自:C语言网

题目描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
 
输入
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
 
输出
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
 
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
我在做这道题的时候想到是用数组来做,但是用数组其实是比较繁琐的。
随即我就想出了另一种算法,是不用数组的
解析
2 3 4 5  第一行是第一个数➕2得到第二个数。。。
1 3 6 10 15
3 4 5    第二行是第一个数+3得到第二个数。。。
2 5 9 14
4 8 13
7 12
11
依次类推就能得出他的规律,只要规律找出来了,其实写程序就非常简单了
以下贴出源码????
 1 #include <stdio.h>
 2 int main ()
 3 {
 4     int n,i,j,m,s,k;
 5     scanf("%d",&n);
 6     s=1;m=1;
 7     for(i=1;i<=n;i++)
 8     {
 9         m=s;        //m是要输出的每一项,s是第一列里的每两项的差值,k是每一行的两项的差值
10         s=s+i;       
11         k=i+1;
12 
13         for(j=i;j<=n;j++)
14         {
15             if(j==n)
16             {
17                 printf("%3d\n",m);
18             }
19             else
20             {
21                 printf("%3d",m);
22             }
23             m+=k;
24             k++;
25         }
26     }
27     return 0;
28 }