단순 팩토리얼로 문제를 풀 수 없음..
DP기법을 열심히 배워야겠다.
아직도 갈길이 먼 듯 ㅠㅠ
#include <iostream>
using namespace std;
int dp[31][31];
void fill_dp(int l, int r) {
for (int i = 0; i < l; i++) dp[i][0] = 1;
for (int j = 0; j < r; j++) dp[j][j] = 1;
for (int i = 1; i < l; i++) {
for (int j = 1; j < r; j++) {
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
}
}
}
int main() {
fill_dp(31,31);
int testCase;
cin >> testCase;
while (testCase--) {
int n, m;
cin >> n >> m;
cout << dp[m][n] << endl;
}
return 0;
}
DP기법을 열심히 배워야겠다.
아직도 갈길이 먼 듯 ㅠㅠ
#include <iostream>
using namespace std;
int dp[31][31];
void fill_dp(int l, int r) {
for (int i = 0; i < l; i++) dp[i][0] = 1;
for (int j = 0; j < r; j++) dp[j][j] = 1;
for (int i = 1; i < l; i++) {
for (int j = 1; j < r; j++) {
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
}
}
}
int main() {
fill_dp(31,31);
int testCase;
cin >> testCase;
while (testCase--) {
int n, m;
cin >> n >> m;
cout << dp[m][n] << endl;
}
return 0;
}
댓글
댓글 쓰기