문제
입력
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
출력
각 테스트 케이스에 대해 주어진 조건하에 다리를 지을 수 있는 경우의 수를 출력한다.
이 문제를 풀 때 마지막에 dp[n][m]으로 풀어서 답이 자꾸 틀렸는데 m개 중 n개를 선택하는 것으로 [m][n]으로 풀어야지 전체 개수 중 선택 개수 조건이 성립된다.
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
int d[31][31];
for (int i = 0; i < 31; i++)
{
d[i][0] = 1;
d[i][i] = 1;
d[i][1] = i;
}
for (int i = 2; i <= 30; i++)
{
for (int j = 1; j < i; j++)
{
d[i][j] = d[i - 1][j - 1] + d[i - 1][j];
}
}
for (int i = 0; i < t; i++)
{
int n, m;
cin >> n >> m;
cout << d[m][n]<<"\n";
}
}