dfs wa 求助qaq
查看原帖
dfs wa 求助qaq
390730
bnu20zhaojiankun楼主2020/12/7 22:32
#include<bits/stdc++.h>
char a[502][502];
int r=0,ans=0;
int n,m,k;
int check(int i,int j){
	if(i<n&&i>=0&&j<m&&j>=0)return 1;
	return 0;
}
int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int newx=dir[i][0]+x;
		int newy=dir[i][1]+y;
		if(check(newx,newy)&&a[newx][newy]=='.'&&ans<r-k){
			ans++;
			a[newx][newy]='@';
			dfs(newx,newy);
		}
	}
}
int main(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=0;i<n;i++){
		scanf("%s",&a[i]);
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(a[i][j]=='.')r++;
		}
	}
	int sign=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(a[i][j]=='.'){
				dfs(i,j);
				sign=1;
				break;
			}
		}
		if(sign==1)break;
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(a[i][j]=='.'){
				a[i][j]='X';
			}
			else if(a[i][j]=='@'){
				a[i][j]='.';
			}
		}
	}
	for(int i=0;i<n;i++){
		printf("%s\n",a[i]);
	}
	return 0;
}
2020/12/7 22:32
加载中...