쌓고 쌓다
[백준] 일곱 난쟁이 2309번 C++ 풀이 본문
https://www.acmicpc.net/problem/2309
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v;
bool visit[10];
bool solve(int idx, int cnt,int sum) //(현재 인덱스,이제껏 선택한 개수, 이제껏 총합)
{
if (cnt == 7 && sum == 100) // 조건 부합시 현재 방문한것들 모두 출력
{
for (int i = 0; i < 9; i++)
if (visit[i] == true)
cout << v[i] << "\n";
return true;
}
for (int i = idx+1; i < 9; i++) // idx+1부터 모두 방문
{
visit[i] = true;
if (solve(i, cnt + 1, sum + v[i]) == true) // 정답 찾았을 시
return true;
visit[i] = false;
}
return false;
}
int main(void)
{
for (int i = 0; i < 9; i++)
{
int num;
cin >> num;
v.push_back(num);
}
sort(v.begin(), v.end());
for (int i = 0; i < 9; i++) {
visit[i] = true;
if (solve(i, 1, v[i]) == true)
break;
visit[i] = false;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 슈퍼 마리오 2851번 C++ 풀이 (0) | 2022.01.06 |
---|---|
[백준] 학점계산 2754번 C++ 풀이 (0) | 2022.01.05 |
[백준] 생태학 4358번 C++ 풀이 (0) | 2022.01.03 |
[백준] 공장 7578번 C++ 풀이 (0) | 2022.01.02 |
[백준] 창고 다각형 2304번 C++ 풀이 (0) | 2022.01.01 |
Comments