새소식

코딩테스트/백준_실버

[C++][백준 16395] 파스칼의 삼각형

  • -

[문제]

https://www.acmicpc.net/problem/16395

 

16395번: 파스칼의 삼각형

파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행

www.acmicpc.net

 

[문제풀이]

2차원 배열을 만들어서 풀 경우에 점화식 DP[i][j] = DP[i-1][j-1] + DP[i-1][j] 로 풀 수가 있다.

j의 값이 0이거나 i와 같아질 경우에는 1이 되게 만들자.(16~19)

 

[코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#define endl "\n"
 
using namespace std;
 
int pascal[31][31];
 
void combine(int n,int k){
    pascal[0][0= 1;
    pascal[1][0= 1;
    pascal[1][1= 1;
 
    for(int i = 1;i<=n;i++){
        for(int j = 0;j<=k;j++){
            
            if(j == i or j == 0){
                pascal[i][j] = 1;
                continue;
            }
 
            pascal[i][j] = pascal[i-1][j-1+ pascal[i-1][j];
        }
    }
 
    cout<<pascal[n-1][k-1];
}
 
int main(){
    int n,k;
    cin>>n>>k;
    combine(n,k);
 
    return 0;
}
cs
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.