728x90
https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
순열을 구하는 방법은 여러가지가 있다.
STL에서 벡터의 순열을 구하는 방법도있고,
아니면 길이가 N이 될때까지 모든 방법에 대해서 백트래킹을 진행하면서 dfs를 때리는 방식도 있다.
나는 후자를 선택해서 풀어보았다. 하지만 stl 사용 방식도 공부 해 볼것.
브루트포스의 범위는 꽤 넓구나.
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
32
33
34
35
36
37
38
39
40
|
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int N,answer;
int arr[9];
bool isselected[9];
vector<int> v;
void dfs(int cnt){
if(cnt==N){
int sum=0;
for(int i=0; i<v.size()-1; i++){
sum = sum + abs(v[i]-v[i+1]);
}
answer = max(answer,sum);
return;
}
else{
for(int i=0; i<N; i++){
if(isselected[i]==true)
continue;
v.push_back(arr[i]);
isselected[i]=true;
dfs(cnt+1);
isselected[i]=false;
v.pop_back();
}
}
}
int main(void){
cin>>N;
for(int i=0; i<N; i++)
cin>>arr[i];
dfs(0);
cout<<answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
'알고리즘 > 백준' 카테고리의 다른 글
백준 1697 숨바꼭질 - bfs - c++ (0) | 2020.01.28 |
---|---|
백준 10971 - 외판원 순회 2 - dfs 를 이용한 순열 구현 (0) | 2020.01.27 |
백준 1107 리모컨 - 브루트포스 - c++ (0) | 2020.01.26 |
백준 1759 - 암호만들기 (백트래킹) c++ (0) | 2020.01.25 |
백준 1992 - 쿼드트리 (분할정복) C++ (0) | 2020.01.24 |