1486 장훈이의 높은 선반 알고리즘
본문 바로가기
알고리즘 모음집/알고리즘 (Algorithm)

1486 장훈이의 높은 선반 알고리즘

by KyeongMin 2020. 2. 27.
728x90
반응형
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
#define NS 21
int member[NS];
int N, B;
int ret;
int Min = 0x7fffffff;
struct Seo {
	Seo() {
		int T;
		scanf("%d", &T);
		for (int t = 1; t <= T; t++) {
			init();
			scanf("%d %d", &N, &B);
			for (int Ni = 0; Ni < N; Ni++) {
				scanf("%d", &member[Ni]);
			}
			dfs(0, 0);
			ret = Min;
			printf("#%d %d\n", t, ret);
		}
	}
	void init() {
		ret = 0;
		Min = 0x7fffffff;
		memset(member, 0, sizeof(member));
	}
	void dfs(int sum, int idx) {
		//if (Min < sum)return;
		if (idx == N) {
			if (sum >= B) {
				if (Min > (sum - B))Min = (sum - B);
			}
			return;
		}
		dfs(sum + member[idx], idx + 1);

		dfs(sum, idx + 1);
	}
}Seo;
int main(void) {
	return 0;
}

이문제의 포인트는 재귀로 넣고 빼고를 구현 할 수 있는지 입니다.

소스를 직접보면 어처구니 없이 너무나 쉬운데 이정도는 기본으로 할줄 알아야 왠만한 문제는

풀수 있습니다. 힘내세요.

 

포인트는 점원들의 키의 합을 sum에 저장했는데 이게 입력으로 주어진 B이상인것중에 

sum - B 의 최소값을 뽑아내는 문제라고 생각하면 됩니다. 

이렇게 포인트를 나눠서 구현을 해야지 쉽게 구현이 가능해 합니다. 파이팅!!!

728x90
반응형

댓글