[λ°±μ€(BOJ)] ν΄μ¬(14501) C++
λ¬Έμ : BOJ_14501λ² ν΄μ¬
λ¬Έμ μ€λͺ
μμ νμ
n κ°μ λ μ΄ μκ³ , n+1μΌμ§Έ ν΄μ¬λ₯Ό ν©λλ€.
μ΄λ κ° μμΌλ§λ€ ν μ μλ μΌμ νμν κΈ°κ°κ³Ό κ·Έμ λν 보μμ΄ κ°κ° μ£Όμ΄μ§λλ€.
n+1 μ§Έλ ν΄μ¬νλ―λ‘ μΌν μ μκ³ , n μΌ μμ μ²λ¦¬ν μ μλ μΌλ€ μ€μμ μ΅λνμ 보μμ λ°μ μ μκ² ν μΌμ 골λΌμΌ ν©λλ€.
nμ΄ μ΅λ 15μμΌλ‘ μμ νμμΌλ‘ ν΄κ²°ν μ μμ΅λλ€.(O(2^n))
Solution
μ¬κ· ν¨μλ₯Ό λ§λ€κ³ , ν΄λΉ μΌμ μ ννλ κ²½μ°μ μ ννμ§ μλ κ²½μ°λ‘ λ§μ§λ§ μΌκΉμ§ μνν©λλ€.
μ΄λ, expiredλ₯Ό λ§λ€μ΄μ μ΄μ μμΌμμ μ νν μΌμ λν μΌμ νλ μ€μ΄ μλ κ²½μ° νμ¬ μΌμ μ ννλ κ²½μ°λ‘ μ¬κ· ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
Description
- n μΌ μ¬κΉμ§ μ¬κ·κ° λκ³ , λ€μ n+1λ‘ μ¬κ· ν¨μκ° λκΈ° λλ¬Έμ, 보μμ μ΄ν©μ νμΈνλ κ²½μ°λ n+1μΈ κ²½μ°λ‘ νμ΅λλ€.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int result, n;
vector<pair<int,int>> adj;
void recursion(int idx, int expired, int total){
if(idx==n+1){
result = max(result, total);
return;
}
recursion(idx+1,expired,total);
if(idx+adj[idx].first-1<=n && expired<idx){
recursion(idx+1,idx+adj[idx].first-1,total+adj[idx].second);
}
}
int main(){
cin >> n;
adj.resize(n+1);
for(int i=1;i<=n;i++){
int day, value;
cin >> day >> value;
adj[i]={day,value};
}
for(int i=1;i<=n;i++){
recursion(1,0,0);
}
cout << result << '\n';
}
'Algorithm > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] κ³λ¨ μ€λ₯΄κΈ°(2579) (0) | 2022.03.12 |
---|---|
[BOJ] μ΄μ§ νΈλ¦¬(13325) (0) | 2022.03.12 |
[BOJ] νλ²ν λ°°λ(12865) (0) | 2022.03.12 |
[BOJ] μΈνμ μν(2098) (0) | 2022.03.11 |
[BOJ] μ€λμΏ (2580) (0) | 2022.03.10 |