11051λ²: μ΄ν κ³μ 2
첫째 μ€μ \(N\)κ³Ό \(K\)κ° μ£Όμ΄μ§λ€. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))
www.acmicpc.net
λ¬Έμ
μ λ ₯
μΆλ ₯
νμ΄κ³Όμ
μ΄νκ³μλΌλ λ¬Έμ μ κΈ°λ³Έ μμΉμ μμ κ°μ νμμΌλ‘ μ κ·Όμ ν μ μλ λ¬Έμ μλ€.
μμ κ°μ μ νμμ΄ n, k κ°μ΄ λ€μ΄μ€λ©΄ μνλ κ°μ λμΆν΄λΌ μ μλ μ νμμ΄λΌκ³ ν΄μ
μμ κ°μ νμ΄μμ λ¬Έμ μ λμ ν΄μ νμ΄λ³΄μλλ μ΄λ―Έ κ³μ°μ΄ λ κ°μ % 10007μ μ§ννλ μμΌλ‘ μ½λ μ§νμ΄λμ΄ λ°νμμλ¬κ° λ°μμ΄ λμμλ€.
κ·Έλμ κ³ λ―Όμ νλ€κ° μ΄ν κ³μλΌλ μ μμ²΄κ° κ΅¬νλ €λ μμ μμμλ 2κ°μ μλ₯Ό λνλ©΄ ꡬν μ μλ κ°μ΄λ€λ³΄λ
// 1
// 1 1
// 1 2 1
// 1 3 3 1
// dp[n][k] = dp[n - 1][k - 1] + dp[n - 1][k]
κ·Έλλ‘ λ°°μ΄μ λ§λ€μ΄μ ꡬνλ €λ κ° μμͺ½μ μλ 2κ°μ κ°μ λνλ νμμΌλ‘ μ½λλ₯Ό ꡬννμμ΅λλ€.
code
#include <iostream>
long long f[1001][1001];
// dp[n][k] = dp[n - 1][k - 1] + dp[n - 1][k]
// 1
// 1 1
// 1 2 1
int main(void)
{
long long n, k;
std::cin >> n >> k;
f[0][0] = 1;
f[1][0] = 1;
f[1][1] = 1;
for (int i = 2; i <= n; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) f[i][j] = 1;
f[i][j] = (f[i - 1][j - 1] + f[i - 1][j]) % 10007;
}
}
std::cout << f[n][k];
return (0);
}
νκΈ°
μ²μμλ λ¬Έμ λ₯Ό μ¬κ·λ‘ μ κ·Όμ νμλλ°
μ¬κ·λ‘ μ κ·Όμ μ¬κ·μ΄λ€λ³΄λ κ°μ κ°μ λ ꡬνλ μν©μ΄ λ°μμ΄ λμ΄ μκ°μ΄κ³Όκ° λ°μμ΄ λμλ€.
dpλ¬Έμ λ₯Ό μ κ·Όν λλ dpμμ²΄κ° μνλ κ°μ ν¨μ¨μ μΌλ‘ λμΆν΄λ΄λ μκ³ λ¦¬μ¦μ΄λ€λ³΄λκΉ
μ¬κ·λ dpμ λ§μ§μλλ€λΌλ μκ°μ κ°μ§κ² λμλ€.
'Algorithm > λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1417λ² - κ΅νμμ μ κ±° (C++) (0) | 2023.08.20 |
---|---|
[λ°±μ€] 9375λ² - ν¨μ μ μ ν΄λΉ (C++) (0) | 2023.08.19 |
[λ°±μ€] 17212λ² - λ¬λλΌ ν λΌλ₯Ό μν ꡬ맀λκΈ μ§λΆ λμ°λ―Έ (C++) (0) | 2023.08.16 |
[λ°±μ€] 13301λ² - νμΌ μ₯μλ¬Ό (C++) (0) | 2023.08.15 |
[λ°±μ€] 2579λ² - κ³λ¨ μ€λ₯΄κΈ° (C++) (0) | 2023.08.14 |