Algorithm π§π»π»/CodeUp
3510 : μμ° κ΄λ¦¬
dkswnkk
2022. 1. 16. 23:58
λ¬Έμ
μμ° κ΄λ¦¬
첫째 μ€μ λ¨μ μμ°(B)κ° μ λ ₯λλ€. ( 10 <= B <= 35,000 ) λμ§Έ μ€μ μμ°μ μ¬μ©ν μ μλ νλμ μ(N)μ΄ μ λ ₯λλ€. (1 <= N <= 21 ) μ μ§Έ μ€μ 곡백μ κΈ°μ€μΌλ‘ Nκ°μ νλλΉκ° μμ μ μλ‘ μ λ ₯λλ€.
codeup.kr
μ½λ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int>v;
int B,N,ans;
void backtracking(int sum,int index){
if(sum>B) return;
ans= max(ans,sum);
for(int i=index+1; i<N; i++){
if(sum+v[i]>B) continue;
backtracking(sum+v[i], i);
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>B;
cin>>N;
for(int i=0; i<N; i++){
int inp; cin>>inp;
v.push_back(inp);
}
sort(v.begin(),v.end(),greater<>());
for(int i=0; i<N; i++){
backtracking(v[i], i);
}
cout<<ans;
}
νμ΄
μ²μμ λ μ λ¬Έμ μΈκ° μΆμμ§λ§ Nμ΄ 21λ°μ λμ§ μμμ λ°±νΈλνΉμΌλ‘ ν΄κ²°νμ΅λλ€.