學習日誌

C_dec03發表於2020-12-17

刷題記錄19

蛇形矩陣
題目描述
蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。
輸入
本題有多組資料,每組資料由一個正整數N組成。(N不大於100)
輸出
對於每一組資料,輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角中同一行的數字用一個空格分開。行尾不要多餘的空格。
樣例輸入
5

樣例輸出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
程式碼

#include <stdio.h>

int main()	
{
	
	int N;//總行數
	scanf("%d", &N);
	int i, j, down = 1, right;//down為每行第一個數
	for(i = 0; i < N; i++)//外層迴圈控制行數
	{
		down += i;//每行行首的計算賦值
		right = down;
		printf("%d ", down);
		for(j = i+1; j < N; j++)//內層迴圈輸出每行行首之外的數
		{
			right = right + j+1;
			printf("%d",right);
			if(j!=N-1) printf(" ");
		}
		printf("\n");
	}
	
	return 0;
}

解題思路:
這種題目往往都是找出各個元素之間的規律。
1.可以發現,每一行的首元素之間的規律為:
a(n) = a(n - 1) + n - 1;
a(1) = 1;
這個結論很容易就用一個for迴圈實現。
2.每一行元素之間的規律:b(n+1)=bn+行數+1

相關文章