반응형
백준의 2309 문제를 읽었을 때 조합이 생각났다.
9명 중 7명을 뽑아 키의 합이 100인 경우 통과이며, 가능한 정답이 여러 개인 경우가 있다고 했기 때문에 정답 시 프로그램을 종료 시켜야한다.
이를 기반으로 코드를 작성해보자.
#include <bits/stdc++.h>
using namespace std;
int k = 7;
int n = 9;
int a[9];
void combi(int start, vector<int> b){
if(b.size() == k){
int sum = 0;
for(int height : b) sum += height;
if(sum == 100){
sort(b.begin(), b.end());
for(int height : b) cout << height << '\n';
exit(0);
}
return;
}
for(int i = start + 1; i < n; i ++){
b.push_back(a[i]);
combi(i, b);
b.pop_back();
}
}
int main() {
for(int i =0; i < n; i++) cin >> a[i];
vector<int> b;
combi(-1, b);
return 0;
}
재귀함수를 통해 풀었는데, 3번정도 틀렸다.
반응형
'자료구조와 알고리즘 > 알고리즘' 카테고리의 다른 글
트럭 주차 (0) | 2023.07.01 |
---|---|
문자열 카운팅. (0) | 2023.07.01 |
prefix sum (0) | 2023.06.25 |
c++ split (0) | 2023.06.23 |
순열 (0) | 2023.06.23 |
댓글