-
KOI 2019 1차 중등부 1번 / 양팔저울 - 17610Algorithm/BOJ 2020. 8. 13. 15:22123456789101112131415161718192021222324252627282930313233343536373839#include <iostream>#include <vector>using namespace std;int N;int arr[13];vector<bool> flag;int sum;void slv(int idx, int cs, int num) {if(idx == N) {if(num >= 1 && !flag[num]) {flag[num] = true;--sum;}return;}if(cs == 1) num += arr[idx];else if(cs == 2) num -= arr[idx];slv(idx+1, 0, num);slv(idx+1, 1, num);slv(idx+1, 2, num);}int main() {cin >> N;sum = 0;for(int i= 0; i<N; ++i) {cin >> arr[i];sum += arr[i];}flag = vector<bool>(sum+1, false);slv(0, 0, 0);slv(0, 1, 0);slv(0, 2, 0);cout << sum;}
cs https://www.acmicpc.net/problem/17610
17610번: 양팔저울
무게가 서로 다른 k개의 추와 빈 그릇이 있다. 모든 추의 무게는 정수이고, 그릇의 무게는 0으로 간주한다. 양팔저울을 한 번만 이용하여 원하는 무게의 물을 그릇에 담고자 한다. 주어진 모든 추
www.acmicpc.net
양팔저울
각각의 저울을 더한다, 뺀다, 아무것도안한다 3가지 동작에 대해 모든 경우에 수를 따져주어 만들 수 있는 수의 개수를 세면 정답을 구할 수 있습니다.
3^13은 백만임으로 완전탐색으로도 시간안에 해결할 수 있습니다.
'Algorithm > BOJ' 카테고리의 다른 글
KOI 2019 1차 고등부 1번 / 쇼핑몰 - 17612 (0) 2020.08.24 KOI 2019 1차 중등부 2번 / 직각다각형 - 17611 (0) 2020.08.24 KOI 2019 1차 초등부 2 / 회문 - 17609 (0) 2020.08.13 UCPC 2020 C / 함수 복원 - 19544 (0) 2020.08.05 UCPC 2020 B / 던전 지도 - 19543 (0) 2020.08.05