题目来自: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 }