https://www.acmicpc.net/problem/2798
2798번: 블랙잭
문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 ��
www.acmicpc.net
입력으로 받은 숫자중에서 3개를 뽑아서 그 합이 최대값을 넘지 않는선에서 최대값을 구하는 문제이다.
앞선 문제 난쟁이 문제와 같이 3개의 카드를 뽑는데 재귀를 사용하였다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> cards;
vector<int> temp;
int visited[101];
int answer = -1;
int M, N; // 카드개수, max
int getCardSum()
{
int sum = 0;
for (int i = 0; i < temp.size(); i++)
{
sum += temp[i];
}
return sum;
}
void search()
{
if (temp.size() == 3)
{
int n = getCardSum();
if (n <= N)
{
answer = max(answer, n);
}
return;
}
for (int i = 0; i < cards.size(); i++)
{
if (!visited[i])
{
visited[i] = true;
temp.push_back(cards[i]);
search();
visited[i] = false;
temp.pop_back();
}
}
}
int main()
{
cin >> M >> N;
int n;
for (int i = 0; i < M; i++)
{
cin >> n;
cards.push_back(n);
}
search();
cout << answer;
}
'알고리즘 문제' 카테고리의 다른 글
[알고리즘 문제] 백준2178 - 미로탐색 (0) | 2020.08.23 |
---|---|
[알고리즘 문제] 백준14501 - 퇴사 (0) | 2020.08.22 |
[알고리즘 문제] 백준2309 - 일곱 난쟁이 (0) | 2020.08.22 |
[알고리즘문제] 프로그래머스 - 스킬 체크 테스트 level 1 (0) | 2020.04.18 |
[알고리즘문제] 프로그래머스 - N으로 표현 (0) | 2020.04.17 |