求助
查看原帖
求助
1014715
HuangTingFu楼主2024/12/29 21:46
#include<bits/stdc++.h>
using namespace std;
int n,m,d,cnt;
bool mp[1010][1010];
bool used[1010][1010];
struct H{
	int x,y;
}a[1010];
int main()
{
	cin>>n>>m>>d;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			char c;
			cin>>c;
			if(c=='#') mp[i][j]=1;
			else if(c=='H')
			{
				a[++cnt].x=i,a[cnt].y=j;
			}
		}
	}
	for(int i=1;i<=cnt;i++)
	{
		int u=a[i].x,v=a[i].y;
		used[u][v]=1;
		for(int j=1;j<=d;j++)
		{
			if(u+j>n||mp[u+j][v]) break;
			used[u+j][v]=1;
		}
		for(int j=1;j<=d;j++)
		{
			if(u-j<1||mp[u-j][v]) break;
			used[u-j][v]=1;
		}
		for(int j=1;j<=d;j++)
		{
			if(v+j>m||mp[u][v+j]) break;
			used[u][v+j]=1;
		}
		for(int j=1;j<=d;j++)
		{
			if(v-j<1||mp[u][v-j]) break;
			used[u][v-j]=1;
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<used[i][j];
			if(used[i][j]) ans++;
		}
		cout<<endl;
	}
	cout<<ans;
	return 0;
}
2024/12/29 21:46
加载中...