有人和我一样dfs的吗?
2024-04-26 22:48:11
发布于:浙江
46阅读
0回复
0点赞
dfs 伪深搜做法
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,sum;
int mp[105][105];
char a[105][105];
int dir_x[15]={-1,1,0,0,-1,1,1,-1};
int dir_y[15]={0,0,-1,1,-1,1,-1,1};
void dfs(int i,int j)
{
sum=0;
for(int k=0;k<9;k++)
{
int x=i+dir_x[k];int y=j+dir_y[k];
if(x>=1 and x<=n and y>=1 and y<=m)
{
if(mp[x][y]!=1)
{
sum++;
}
}
}
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]=='*')
mp[i][j]=0;
else
mp[i][j]=1;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(mp[i][j]==0)
{
cout<<"*";
continue;
}
else
{
dfs(i,j);//dfs!
cout<<sum;
}
}
cout<<endl;
}
return 0;
}
全部评论 1
#include<iostream> using namespace std; int n,m; char A[105][105]={}; void f(int x,int y){ int a=x+1,b=y+1,sum=0; if(A[x][y]=='*'){ cout<<'*'; return ; } for(int i=x-1;i<=a;i++){ for(int j=y-1;j<=b;j++){ if(A[i][j]=='*') sum++; } } cout<<sum; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>A[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ f(i,j); }cout<<endl; } }
2024-07-23 来自 浙江
0six
2024-08-03 来自 浙江
0
有帮助,赞一个