※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

「AOJ再挑戦71~75」の編集履歴(バックアップ)一覧に戻る
AOJ再挑戦71~75」を以下のとおり復元します。
*問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);
  	}
 }  

復元してよろしいですか?