이모저모

boj 14620 본문

BOJ

boj 14620

Alpa 2017. 6. 7. 10:30

해결방법

brute force로 3개를 선택하여 최솟값을 구한다.

그리디한 방법으로 풀면 안됨.





#include <iostream> 

#include <iterator>

#include <algorithm> 

#include <vector>

#include <list>

#include <map>

#include <set>

#include <queue>

#include <stack>

#include <string>

#include <cmath>

#include <cstdio>

#include <cstring>

using namespace std;

#define MOD 1000000007

#define INF 2147483647

#define LNF 9223372036854775807

#define pb push_back

#define mp make_pair

typedef long long ll;

typedef unsigned long long ull;

typedef pair<ll,ll> pll;

typedef pair<int,int> pii;


int main(){

freopen("sample.txt","r",stdin);

vector<int> vec;

int n, data[10][10],len,ret=10000;

scanf("%d",&n);

for(int i=0;i<n;i++)

for(int j=0;j<n;j++)

scanf("%d",&data[i][j]);

for(int i=1;i<n-1;i++)

for(int j=1;j<n-1;j++)

vec.pb(data[i][j]+data[i-1][j]+data[i][j-1]+data[i+1][j]+data[i][j+1]);


len = vec.size();

for(int i=0;i<len;i++){

for(int j=i+1;j<len;j++){

for(int k=j+1;k<len;k++){

int xi=i/(n-2),yi=i%(n-2);

int xj=j/(n-2),yj=j%(n-2);

int xk=k/(n-2),yk=k%(n-2);

if(abs(xi-xj)+abs(yi-yj)>2 && abs(xi-xk)+abs(yi-yk)>2 && abs(xj-xk)+abs(yj-yk)>2)

ret = min(ret, vec[i]+vec[j]+vec[k]);

}

}

}

printf("%d\n",ret);

return 0;

}





'BOJ' 카테고리의 다른 글

boj 14622  (0) 2017.06.07
13549  (0) 2017.06.03
14614  (0) 2017.05.31
14577  (0) 2017.05.29
14552  (0) 2017.05.26
Comments