알고리즘/분할정복 & 재귀 & 백트래킹

[백준] 10819 차이를 최대로

HJ39 2023. 5. 17. 01:22

문제를 읽고 예제를 봤을 때 왜 62가 나오는지 몰랐다.(하핳)

 

그래서 문제에서 알려준 식을 가지고 코드로 변환하여 작성했더니 정말 62가 나와서 놀랬다.ㅎ

 

 

#include <bits/stdc++.h>

using namespace std;

int N10819;
int maxNum = -INT_MAX;
vector<int> input10819;
vector<bool> check10819(9,false);
vector<int> tmp10819;

void backback10819(int count){
    
    if(count == N10819){
        int sum = 0;
        for(int i=0; i<N10819-1; ++i){
            sum += abs(tmp10819[i] - tmp10819[i+1]);
        }
        
        maxNum = max(maxNum,sum);
        
        return;
    }
    
    for(int i=0; i<N10819; ++i){
        if(!check10819[i]){
            check10819[i] = true;
            tmp10819.push_back(input10819[i]);
            backback10819(count+1);
            tmp10819.pop_back();
            check10819[i] = false;
        }
    }
    
    
}

void forMax10819(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    cin>>N10819;
    
    for(int i=0;i<N10819;++i){
        int a; cin>>a;
        input10819.push_back(a);
    }
    backback10819(0);
    
    cout<<maxNum<<"\n";
}

'알고리즘 > 분할정복 & 재귀 & 백트래킹' 카테고리의 다른 글

[백준] 16974 레벨 햄버거  (0) 2023.05.19
[백준] 10974 모든 순열  (1) 2023.05.17
[백준] 2580 스도쿠  (0) 2023.05.16
[백준] 1987 알파벳  (0) 2023.05.15
[백준] 1182 부분 수열의 합  (0) 2023.05.15