티스토리 뷰
https://www.acmicpc.net/problem/14500
브루트 포스로 모든 좌표에 대하여 테트로미노의 모든 경우의 수인 19가지를 살펴보면 된다. 탐색 횟수가 최대 500*500*19*4=19000000 이므로 시간 내에 충분히 돌아간다.
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <cstdio> #include <algorithm> using namespace std; int n,m,map[510][510],ans; pair<int,int> d[19][4]={ {{0,0},{0,1},{0,2},{0,3}}, {{0,0},{1,0},{2,0},{3,0}}, {{0,0},{0,1},{1,0},{1,1}}, {{0,0},{1,0},{2,0},{2,1}}, {{0,0},{0,1},{0,2},{1,0}}, {{0,0},{0,1},{1,1},{2,1}}, {{0,0},{0,1},{0,2},{-1,2}}, {{0,0},{1,0},{1,1},{2,1}}, {{0,0},{0,1},{-1,1},{-1,2}}, {{0,0},{0,1},{0,2},{1,1}}, {{0,0},{0,1},{-1,1},{1,1}}, {{0,0},{0,1},{0,2},{-1,1}}, {{0,0},{1,0},{2,0},{1,1}}, {{0,0},{1,0},{2,0},{2,-1}}, {{0,0},{1,0},{1,1},{1,2}}, {{0,0},{0,1},{1,0},{2,0}}, {{0,0},{0,1},{0,2},{1,2}}, {{0,0},{1,0},{0,1},{-1,1}}, {{0,0},{0,1},{1,1},{1,2}} }; int main() { scanf("%d %d",&n,&m); for(int i=0;i<n;i++) for(int j=0;j<m;j++) scanf("%d",&map[i][j]); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { for(int k=0;k<19;k++) { int sum=0; bool flag=true; for(int l=0;l<4;l++) { int nx=i+d[k][l].first,ny=j+d[k][l].second; if(nx<0 || nx>=n || ny<0 || ny>=m) { flag=false; break; } sum+=map[nx][ny]; } if(flag && ans<sum) ans=sum; } } } printf("%d\n",ans); return 0; } | cs |
'Algorithm > BOJ' 카테고리의 다른 글
1157 단어 공부 (0) | 2018.03.07 |
---|---|
15501 부당한 퍼즐 (0) | 2018.03.05 |
1937 욕심쟁이 판다 (0) | 2018.03.05 |
8006 Connections (0) | 2018.03.05 |
1854 K번째 최단경로 찾기 (0) | 2018.03.05 |