Mini
[맞음] 백준 1535 안녕 // 갯수1개 제한 dp 본문
https://www.acmicpc.net/problem/1535
* 풀이
- 갯수제한dp는
- dfs(idx, 상태)로 풀면 되는듯?
- for문으로 할꺼면 뒤에서부터 채우기
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int hp[24], gi[24];
ll dp[24][104];
ll dfs(int idx, int cnt) {
if(cnt <= 0 ) {
return -987654321; //배제
}
if(idx==n) {
return 0;
}
ll & ret = dp[idx][cnt];
if(ret!=-1) {
return ret;
}
ret=0;
ret=max(ret,dfs(idx+1,cnt)); //선택x
ret=max(ret,dfs(idx+1,cnt-hp[idx])+gi[idx]); //선택o
return ret;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
memset(dp,-1,sizeof(dp));
cin>>n;
for(int i=0;i<n;++i) {
cin>>hp[i];
}
for(int i=0;i<n;++i) {
cin>>gi[i];
}
cout<<dfs(0,100);
}
'Algorithm > dp' 카테고리의 다른 글
[틀림] 프로그래머스 도둑질 // 노드스킵 dp (0) | 2025.03.20 |
---|---|
[틀림] 백준 2169 로봇조종하기 // 중복방문안된는 dp, 방향 dp (0) | 2025.03.19 |
[틀림] 백준 1513 경로찾기 // 4차원 dp, 경로찾기 dp , 경우의수 dp (0) | 2025.03.18 |
백준 4781 사탕가게 // dp, 갯수무한인경우는 dfs내 for문, 소수처리방법 (0) | 2025.03.18 |
[알고리즘] 416. Partition Equal Subset Sum c++ 리트코드 // 완탐, dp (0) | 2024.07.10 |