Deep Learning study
백준 17406문제 본문
반응형
#include <bits/stdc++.h>
using namespace std;
int A[50][50],N,M,K,ANS = 1e9;
vector<int> order;
struct{
int r,c,s;
}rot[6];
void go(int r, int c, int s){
if(!s) return;
int sr = r - s, sc = c - s, er = r + s, ec = c + s;
int x = A[sr][sc], y = A[sr][ec], z = A[er][ec], w = A[er][sc];
for(int i = sr ; i < er ; i++)
if(i == er-1) A[i][sc] = w;
else A[i][sc] = A[i+1][sc];
for(int i = ec ; i > sc ; i--)
if(i==sc+1) A[sr][i] = x;
else A[sr][i] = A[sr][i-1];
for(int i = er ; i > sr ; i--)
if(i == sr +1) A[i][ec] = y;
else A[i][ec] = A[i-1][ec];
for(int i = sc ; i < ec ; i++)
if(i==ec-1) A[er][i] = z;
else A[er][i] = A[er][i+1];
go(r,c,s-1);
}
int solve(){
int T[55][55] = {0,};
memcpy(T, A, sizeof(A));
for(int i=0 ; i<K ; i++){
int n = order[i];
go(rot[n].r,rot[n].c, rot[n].s);
}
int ret = 1e9;
for(int i=0 ;i<N ; i++){
int sum = 0;
for(int j=0 ; j<M ; j++) sum+=A[i][j];
ret = min(ret, sum);
}
memcpy(A, T, sizeof(A));
return ret;
}
int main(){
ios_base::sync_with_stdio(false);
cin >> N >> M >> K;
for(int i=0 ; i<N ; i++)
for(int j=0 ;j<M ; j++)
cin >> A[i][j];
order.resize(K);
for(int i=0 ; i<K ; i++){
int r,c,s; cin >> r >> c >> s;
rot[i].r = r-1;
rot[i].c = c-1;
rot[i].s = s;
order[i] = i;
}
do{
ANS = min(ANS, solve());
}while(next_permutation(order.begin(),order.end()));
cout << ANS;
return 0;
}
백준 배열돌리기4 문제 풀이입니다.
.. 요즘 머리가 굳었느지 자꾸 이상한 실수한다... 인덱스라던가...
반응형
'백준 문제 코드' 카테고리의 다른 글
백준 17135문제 (0) | 2019.12.08 |
---|---|
백준 3945문제 (0) | 2019.12.08 |
백준 17471문제 (0) | 2019.12.07 |
백준 16637문제 (0) | 2019.12.05 |
백준 17281문제 (0) | 2019.11.24 |
Comments