๋ฌธ์ |
10819๋ฒ: ์ฐจ์ด๋ฅผ ์ต๋๋ก
์ฒซ์งธ ์ค์ N (3 โค N โค 8)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๋ฐฐ์ด A์ ๋ค์ด์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ๋ฐฐ์ด์ ๋ค์ด์๋ ์ ์๋ -100๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
www.acmicpc.net
ํ์ด |
๋ถ๋ฅ : ์์ ํ์
๋ฌด์์๋ก ๋์ด๋ ์์ด์์
|A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|
์ ์์ ์ต๋๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค.
1. algorithmํค๋์ next_permutationํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด์์์ ์์ด์ ๋ง๋ญ๋๋ค.
2. ๋ฌด์์๋ก ๋ง๋ค์ด์ง ์์ด์ ์์ ์์ ๋์ ํ์ฌ, ๊ฐ์ฅ ํฐ ๊ฐ์ด ๋์ฌ๋๋ง๋ค ์ต๋๊ฐ์ ๊ฐฑ์ ํด์ค๋๋ค.
์ฝ๋(O(n+1)!) *O(n+1)!์ด ์๋๋ผ๋ฉด ์๋ ค์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค(--)(__)* |
#include <iostream> | |
#include <algorithm> | |
#include <deque> | |
#include <cmath> | |
using namespace std; | |
int main() { | |
int n, m = 0; | |
cin >> n; | |
deque<int> arr(n); | |
for (int i = 0; i < n; i++) cin >> arr[i]; | |
//๋ชจ๋ ์์ด ๊ตฌํ๊ธฐ | |
for (int i = 0; i < n; i++) { | |
int curMax = 0; | |
deque<int> temp(n); | |
copy(arr.begin(), arr.end(), temp.begin()); | |
while (next_permutation(temp.begin(), temp.end())) { | |
for (int k = 1; k < n; k++) curMax += abs(temp[k] - temp[k - 1]); | |
m = max(curMax, m); | |
curMax = 0; | |
} | |
arr.push_front(arr.back()); | |
arr.pop_back(); | |
} | |
cout << m << endl; | |
return 0; | |
} |
'๐ค PS(Problem Solving) > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/c++] 11729๋ฒ - ํ๋ ธ์ด ํ ์ด๋ ์์ (0) | 2019.11.20 |
---|---|
[๋ฐฑ์ค/c++] 1107๋ฒ - ๋ฆฌ๋ชจ์ปจ (0) | 2019.11.16 |
[๋ฐฑ์ค/c++] 10610๋ฒ - 30 (0) | 2019.11.14 |
[๋ฐฑ์ค/c++] 10971๋ฒ - ์ธํ์ ์ํ2 (0) | 2019.11.13 |
[๋ฐฑ์ค/c++] 1525๋ฒ - ํผ์ฆ (0) | 2019.11.12 |