728x90
https://www.acmicpc.net/problem/10819
순열을 구하는 방법은 여러가지가 있다.
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 |