티스토리 뷰
# 출처 : https://www.acmicpc.net/problem/16198
별다른 어려움 없이 재귀와 백트래킹을 이용한 완전탐색을 통해 문제를 풀었다.
# 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> #include <algorithm> using namespace std; int N, W[10]; bool chk[10]; int func() { int ret = 0; for (int i = 1; i < N - 1; ++i) { if (chk[i]) continue; int left = i - 1; int right = i + 1; while (chk[left]) --left; while (chk[right]) ++right; chk[i] = true; ret = max(ret, func() + W[left] * W[right]); chk[i] = false; } return ret; } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; for (int i = 0; i < N; ++i) cin >> W[i]; cout << func() << '\n'; } | cs |
'ALGORITHM' 카테고리의 다른 글
백준 / 5014번 / 스타트링크 / C++ (0) | 2019.02.18 |
---|---|
백준 / 2422번 / 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 / C++ (0) | 2019.02.16 |
백준 / 11723번 / 집합 / C++ (0) | 2019.02.15 |
백준 / 14502번 / 연구소 / C++ (0) | 2019.02.02 |
백준 / 6679번 / 싱기한 네자리 숫자 / C++ (0) | 2019.01.31 |
댓글