n個の出力線の前にC言語パスカルの三角形(低い時間計算)

パスカルの三角形のn行(低い時間計算)の前にC言語

パスカルの三角形が定義されています

パスカルの三角形は、我々が示したように数が、各列の和であり、2つのことを知った場合、三角形は二項係数と幾何学的配置、中学校であります
ここに画像を挿入説明

行のパスカルの三角形知られている番号

我々はパスカルの三角形に必要な行数がわかっている場合は、取得したその特性に応じて各位置の値の2次元配列を一覧表示することができます

行のパスカルの三角形の未知の番号

行番号が不明な場合でも、このメソッドは使用できません。

高校では、我々はパスカルの三角形を学んだ知識は、各行に正確二項係数を配置し、あなたが直接、以下のコードを見ることができることを知って、以下のレビューを忘れることができ二項

二項のパスカルの三角形のプロパティ

連絡先パスカルの三角形はべき乗則タイプ、すなわち二項定理の最も近い二項膨張係数です。例えば、パスカルの三角形で、ちょうど3行の数は、4と2つの数の四列を順次正確立方膨張式に対応する、2つの式のそれぞれの第3膨張係数と正方形の数に対応します各項目の係数ここに画像を挿入説明ので。
したがって、二項定理によれば、n行目の数mは、組み合わせの数をとる、すなわち、C(N-1、M-1)として表すことができるM-1中のn-1個の異なる要素から要素
2をC(M、N)= Mここで、 !/(N!*(MN)!)、 手順、すなわち、C、フロント一つを介して引き出すことができるこれらの各々は、このステップの時間複雑さを軽減するために簡略化することができます(M、N)= C( M、N-1)*(M-N + 1)/ N、 手順に従って描くことができます

#include<stdio.h>

int main ()
{
	int x,y;//分别为杨辉三角的x行,第y个;
	int temp;//求某行某个的值时,暂存该行上一个的值
	int n;//保存输入的行数
	scanf("%d",&n);//输出要输出的杨辉三角行数
	printf("1\n"); //输出第一行
	for(x=2;x<=n;x++,temp=1){//从第二行开始每行输出
		printf("1 ");//输出每一行的开头
		for(y=2;y<x;y++){
			//根据二项式定理,第x行第y项等于第y-1项乘以x-y+1,再除以y-1 
			printf("%d ",temp=temp*(x-y+1)/(y-1));
		}
		printf("1\n");
	}
		return 0;
 } 

結果
ここに画像を挿入説明

出版元の記事 ウォンの賞賛1 ビュー240

おすすめ

転載: blog.csdn.net/qq_43109995/article/details/104428432