본문 바로가기
정올 문제풀이

정올 2071 : 파스칼 삼각형

by watergrace2u 2020. 4. 27.
반응형
SMALL

총 세가지 버전.

 

1. 첫번째

: 가장 일반적인 파스칼의 삼각형

왼쪽 상단부터 채워줌

arr[x][y] = arr[x-1][y] + arr[x-1][y-1] 사용

 

2. 두번째

: 따로 공백도 출력해주는방법을 사용

왼쪽 하단부터 채워줌

arr[x][y] = arr[x+1][y] + arr[x+1][y-1] 사용

 

3. 세번째 

: 행과 열을 바꿔서 열을 기준으로 채워줌

오른쪽 하단부터 채워줌

arr[y][x] = arr[y][x + 1] + arr[y + 1][x + 1]

 

 

#include <stdio.h>

int main() {
	int n,m;
	scanf("%d %d", &n,&m);
	int arr[100][100];

	if (m == 1) {
		for (int i = 0; i < n; i++) {
			for (int j = 0; j <= i;j++) {
				if (j == 0 || i == j)arr[i][j] = 1;
				else arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < i + 1; j++) {
				printf("%d ", arr[i][j]);
			}
			printf("\n");
		}
	}
	else if (m == 2) {
		for (int i = n - 1; i >= 0; i--) {
			for (int j = 0; j < n - i; j++) {
				if (j == 0 || j == n - i - 1)arr[i][j] = 1;
				else arr[i][j] = arr[i + 1][j] + arr[i + 1][j - 1];
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < i; j++) {
				printf(" ");
			}
			for (int j = 0; j < n - i; j++)
				printf("%d ", arr[i][j]);
			printf("\n");
		}
	}
	else if (m == 3) {
		for (int i = n - 1; i >= 0; i--) {
			for (int j = n - 1; j >= i; j--) {
				if (j == n - 1 || i == j)arr[j][i] = 1;
				else arr[j][i] = arr[j][i + 1] + arr[j + 1][i + 1];
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < i + 1; j++) {
				printf("%d ", arr[i][j]);
			}
			printf("\n");
		}
	}
    return 0;
}
반응형
LIST

댓글