0071 - Bombs Chain
#include <iostream> using namespace std; bool flg[8][8]; void dfs(int x, int y) { flg[y][x]=false; for (int k=1; k<=3; ++k) { if (flg[y][x+k] && x+k<8) dfs(x+k,y); if (flg[y+k][x] && y+k<8) dfs(x,y+k); if (flg[y][x-k] && 0<=x-k) dfs(x-k,y); if (flg[y-k][x] && 0<=y-k) dfs(x,y-k); } } void Slove(int number) { int x, y; for (int i=0; i<8; ++i) for (int j=0; j<8; ++j) { char bomb; cin >> bomb; flg[i][j]=(bomb-'0'); } cin >> x >> y; dfs(x-1,y-1); cout << "Data " << number << ":" << endl; for (int i=0; i<8; ++i) { for (int j=0; j<8; ++j) cout << flg[i][j]; cout << endl; } } int main(void) { int n; cin >> n; for (int i=0; i<n; ++i) Slove(i+1); return 0; }
再帰するだけ。