題目來自: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 }