C ++ / C言語パスカルの三角形(詳しく説明)。

フォームでパスカルの三角形以下に示すように

ここに画像を挿入説明
しかし、このマップDOを再生する方法はありますか?
私たちは、すべてゼロに欠員を埋めることができ、かつ法律を見つけること。

図に示すように、充填ギャップ後0。

ここに画像を挿入説明
ここに画像を挿入説明
私たちは、行と列の数は、RとCに設定されている置きます。

我々は見つけることができます上の図では:

また、R = 4、C = 9。

また、R = 7、C = 15。

このような法律を得ることができます。

C = 2 * R +1と最初のインデックス番号は、C / 2を与えるように丸みを帯びたダウンしているの最初の行

加えて、我々はまた、見ることができます:
前の行との和のこれら斜め線の数の2つの数値を。
番号はすべて行列を格納するために[R] [C]を使用した場合、この配列、I、Jは、それぞれ行および列に対して、この規則を得ることができます。

行列[I] [J] =行列[I-1] [J-1] +行列[I-1] [J + 1]。

次のようにコードを得ることができます。

#include<bits/stdc++.h>
using namespace std;
int main() {
//	int r,c;//分别表示r行和c列。
	int r,c;
	cin>>r;
	c=2*r+1;//列数与行数的关系。
	int r_one=c/2;//第一行的第一个数。(以第一行的第一个数为起点)
	int matrix[r][c]; //把所有r行c列的所有点都标为0。
	memset(matrix,0,sizeof(matrix));//这里是把二维数组所有项都初始化为零
	matrix[0][r_one]=1;
	for(int i=1; i<r; i++) {
		for(int j=1; j<c; j++) {
			matrix[i][j]=matrix[i-1][j-1]+matrix[i-1][j+1];
		}
	}
	for(int i=0; i<r; i++) {
		for(int j=0; j<c; j++) {
			if(matrix[i][j]==0)
				printf(" \t");
			else
				printf("%d\t",matrix[i][j]);
		}
		cout<<endl;
	}
	return 0;
}

咲いてください。

リリース8元の記事 ウォンの賞賛8 ビュー200

おすすめ

転載: blog.csdn.net/xzy15703841578/article/details/105375798
おすすめ