1. 문제
17610번: 양팔저울
무게가 서로 다른 k개의 추와 빈 그릇이 있다. 모든 추의 무게는 정수이고, 그릇의 무게는 0으로 간주한다. 양팔저울을 한 번만 이용하여 원하는 무게의 물을 그릇에 담고자 한다. 주어진 모든 추
www.acmicpc.net
2. 소스코드
#include <iostream>
#include <vector>
using namespace std;
vector <bool> weigh(2600001, false);
int k;
void dfs(int a[], int p, int sum)
{
if (p > k)
{
if (sum < 0) return;
weigh[sum] = true;
}
else
{
dfs(a, p + 1, sum - a[p]);
dfs(a, p + 1, sum);
dfs(a, p + 1, sum + a[p]);
}
}
int main()
{
int x = 0;
cin >> k;
int v[15];
for (int i = 1; i <= k; i++)
{
cin >> v[i];
x += v[i];
}
dfs(v, 1, 0);
int y = 0;
for (int i = 1; i <= x; i++)
if (!weigh[i]) y++;
cout << y;
}
'알고리즘 > 구름' 카테고리의 다른 글
[ 구름 ] 정사각형의 개수 풀이 (0) | 2020.06.29 |
---|---|
[ 구름 / 그리디 ] 거스름돈 풀이 (0) | 2020.06.29 |
[ 구름 / 문자열 ] 거울 단어 풀이 (0) | 2020.06.29 |
[ 구름 / 문자열 ] 회문 풀이 (0) | 2020.06.29 |
[ 구름 / 단순 구현 ] 막대기 풀이 (0) | 2020.06.29 |