C言語の毎日の練習:ヤン・フイ・トライアングルの出力

質問: 次の Yang Hui 三角形を出力してください (最初の 10 行を出力するために必要です)

リスト:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
......

質問分析: ヤン・フイの三角形が理解できない場合は、百度で調べてください。おそらく次のようになります。私たちはそれに答えることができます。

コードは以下のように表示されます:

#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int yh[10][10] = { 0 };
	yh[0][0] = 1;
	yh[1][0] = 1;
	yh[1][1] = 1;
	// i = 行   j = 列
	for (i = 2; i < 10; i++)
	{
		for (j = 0; j <= i; j++)
		{
			if (j == 0 || j == i)
			{
				yh[i][j] = 1;
			}
			else
			{ // i 取行  j 取列  
			  // yh[i-1] [j-1] 
			  // i = 2; j = 1;
				// yh[i][j] = [1,0] + [1,1] = yh[i-1][j-1] + yh[i-1][j] 
				// yh[i][j] = [i][j] == [1,0] + [1,1] 下标里的值相加得出
				yh[i][j] = yh[i-1][j-1] + yh[i-1][j];
				
			}
		}
	}

	for (i = 0; i < 10; i++)
	{
		j = 10 - i;
		while (j--) 
		{
			printf("    "); // 打印菱形
		}
		for (j = 0; j <= i; j++)
		{
			printf("%8d", yh[i][j]); 
		}
		printf("\n");
	}
	return 0;
}

操作結果:

 質問分析: 配列 (2 次元配列) を使用して 0 から計算し、その値は前のグループの値の合計であり、これから答えを得ることができます。

例えば:

[ i , j ] = [ 1 , 0 ]+[ 1 , 1 ]
[2, 1] の値を取得します
(3, 1) の値を取得する必要がありますか?
つまり、 [ i , j ] = [ 2 , 0 ] + [ 2 , 1 ]
類推して、フォローアップを得ることができます。

 

おすすめ

転載: blog.csdn.net/m0_58724783/article/details/131965367