C ++ / C 언어 파스칼의 삼각형 (자세히 설명).

형태로 파스칼의 삼각형은 아래와 같이

그림 삽입 설명 여기
그러나이지도 할 일을 재생할 수있는 방법은 무엇입니까?
우리는 제로로 모든 공석을 채울 수 있고, 법을 찾을 수 있습니다.

0도에 도시 된 바와 같이 충진 후 갭.

그림 삽입 설명 여기
그림 삽입 설명 여기
우리는 행과 열의 수는 R과 C로 설정됩니다 넣어;

그림에서 우리가 찾을 수 위 :

경우 R = 4, C = 9;

경우 R = 7, C = 15;

이러한 법률을 얻을 수있다;

C = 2 * R +1 및 제 인덱스 번호의 첫 번째 줄 수득 둥근 다운 C / 2

또한, 우리는 또한 볼 수 있습니다 :
이전 행과 합이 사선의 번호의 두 숫자를.
숫자가 모든 행렬 (R)]을 저장하기 위해 사용하는 경우 [C]는,이 배열은, 난, 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 · 전망 (200)

추천

출처blog.csdn.net/xzy15703841578/article/details/105375798