盯一天电脑简直辣眼睛

#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int map[110][110]={0};
int visit[110][110]={0};
int n,m,ans;
int count =0;
void dfs(int r,int c){
if(r==n&&c==m){
count ++;
return ;
}
visit[r][c]=1;
if(visit[r-1][c]==0&&map[r-1][c]==1){
dfs(r-1,c);
}
if(visit[r-2][c]==0&&map[r-2][c]==1){
dfs(r-2,c);
}
if(visit[r+1][c]==0&&map[r+1][c]==1){
dfs(r+1,c);
}
if(visit[r+2][c]==0&&map[r+2][c]==1){
dfs(r+2,c);
}
if(visit[r][c-1]==0&&map[r][c-1]==1){
dfs(r,c-1);
}
if(visit[r][c-2]==0&&map[r][c-2]==1){
dfs(r,c-2);
}
if(visit[r][c+1]==0&&map[r][c+1]==1){
dfs(r,c+1);
}
if(visit[r][c+2]==0&&map[r][c+2]==1){
dfs(r,c+2);
}
if(visit[r-1][c-1]==0&&map[r-1][c-1]==1){
dfs(r-1,c-1);

}
if(visit[r-1][c+1]==0&&map[r-1][c+1]==1){
dfs(r-1,c+1);

}
if(visit[r+1][c+1]==0&&map[r+1][c+1]==1){
dfs(r+1,c+1);

}
if(visit[r+1][c-1]==0&&map[r+1][c-1]==1){
dfs(r+1,c-1);

}
return;
}

int main (){
cin>>n>>m;
int i,j;
char a;
for(i=2;i<=n+1;i++){
for(j=2;j<=m+1;j++){
cin>>a;
if(a=='#') map[i][j]=1;
}
}
for(i=2;i<=n+1;i++){
for(j=2;j<=m+1;j++){
if(map[i][j]==1&&visit[i][j]==0){
ans++;
dfs(i,j);
}
}
}

cout <<ans <<endl;
return 0;
}悪,为什么只有60分?哭...晕...在...厕...所

3 条评论

  • 1

信息

ID
1051
难度
4
分类
搜索 | 搜索与剪枝 点击显示
标签
递交数
6211
已通过
2439
通过率
39%
被复制
14
上传者