AOJ0569 イルミネーション
致命的なミスをして一発ACできなかったから精進。
解法:なし。
#include <cstdio> using namespace std; int dy[] = {-1,0,1,1,0,-1}; int dx0[] = {0,1,0,-1,-1,-1}; int dx1[] = {1,1,1,0,-1,0}; int w,h,ans = 0; int m[110][110] = {0}; void dfs(int y,int x){ m[y][x] = 2; for(int i = 0;i < 6;i++){ int ny = y + dy[i]; int nx; if(y % 2 == 0){ nx = x + dx0[i]; }else{ nx = x + dx1[i]; } if(nx >= 0 && nx <= w+1 && ny >= 0 && ny <= h+1){ if(m[ny][nx] == 1){ ans++; }else if(m[ny][nx] == 0){ dfs(ny,nx); } } } return; } int main(){ scanf("%d%d",&w,&h); for(int i = 1;i <= h;i++){ for(int j = 1;j <= w;j++){ scanf("%d",&m[i][j]); } } dfs(0,0); printf("%d\n",ans); return 0; }