2024-06-16 15:34:32
发布于:北京
#include <bits/stdc++.h>
using namespace std;
int x[18]={-1,1,0,0,-1,-1,1,1};
int y[18]={0,0,-1,1,-1,1,-1,1};
int main() {
int n,m,x1,y1,a[101][101]={},ans=1,s=1;
bool b[101][101]={};
cin >>n>>m>>x1>>y1;
a[x1][y1]=1;
b[x1][y1]=true;
while(ans!=n*m){
for(int j=1;j<=n;j++){
for(int i=1;i<=m;i++){
if(a[j][i]!=0&&b[j][i]==true){
for(int k=0;k<8;k++){
if(a[j+x[k]][i+y[k]]==0&&j+x[k]>=1&&j+x[k]<=n&&i+y[k]>=1&&i+y[k]<=m){
ans++;
a[j+x[k]][i+y[k]]=s;
b[j+x[k]][i+y[k]]=false;
}
}
}
}
}s++;
for(int j=1;j<=n;j++){
for(int i=1;i<=m;i++){
if(a[j][i]!=0){
b[j][i]=true;
}
}
}
}a[x1][y1]=0;
for(int j=1;j<=n;j++){
for(int i=1;i<=m;i++){
cout<<a[j][i]<<" ";
}cout<<endl;
}cout<<s-1;
return 0;
}
全部评论 2
下次可以使用markdown自带的多行代码,这样子会更清楚一点。
2024-06-16 来自 浙江
0stupid
2024-06-16 来自 北京
0
有帮助,赞一个