「AOJ再挑戦71~75」の編集履歴(バックアップ)一覧に戻る

AOJ再挑戦71~75 - (2014/02/02 (日) 15:12:44) の編集履歴(バックアップ)


問71 Bombs Chain

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0071
ボン○ーマンもどきの爆発連鎖を扱った問題。
解法
再帰以外思いつかなかった。


#include<stdio.h>
#include<string.h>

int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

bool inArea(int x,int y){
	return (0<=x) && (x<8) && (0<=y) && (y<8);
}

void chain(char map[8][9],int x,int y){
	map[y][x]='0';
	for(int i=0;i<4;i++){
		for(int j=1;j<=3;j++){
			int nx=x+dx[i]*j;
			int ny=y+dy[i]*j;
			if(inArea(nx,ny)&&map[ny][nx]=='1'){
 				chain(map,nx,ny);
			}
		}
 	}
} 
 
void calc(int turn){
 	char map[8][9];
	for(int i=0;i<8;i++){
		scanf("%s",map[i]);
	}
 	int sx,sy;
 	scanf("%d %d",&sx,&sy);
	sx--;
	sy--;
	chain(map,sx,sy);
 	printf("Data %d:\n",turn);
	for(int i=0;i<8;i++){
		printf("%s\n",map[i]);
	}
} 
 
int main(){
	int n;
	scanf("%d",&n);
 	for(int i=1;i<=n;i++){
		calc(i);
 	}
}