全wa求助
  • 板块P1683 入门
  • 楼主howard234
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/1 10:23
  • 上次更新2024/12/1 12:34:14
查看原帖
全wa求助
1464439
howard234楼主2024/12/1 10:23

我认为是没什么问题的,写完发现与某篇题解类似,但他是c++我是c

//存地图 转弯 怎么走 瓷砖计数问题(不能重复计数

#include<stdio.h>
int n,m;//n行m列
char g[30][30];
int res=0;//瓷砖数
int st[30][30];//记录是否走过
//坐标x,y
//计算机的坐标系不一样,根据数组存储来 x朝下,y朝右
//最好顺序上右下左
int dx[4]={-1,0,1,0};//上右下左顺序xy存储
int dy[4]={0,1,0,-1};

void dfs(int x, int y){
for(int i=0;i<4;i++){
    int a=x+dx[i],b=y+dy[i];

    if(a<0||a>=n||b<0||b>=m)continue;//不出界
    if(g[a][b]!='.')continue;
    if(st[a][b]) continue;
//走(a,b)这个点
st[a][b]=1;
res++;
    dfs(a,b);
//st[a][b]=0;
}

}




int main(){
scanf("%d %d",&m,&n);
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++)
scanf("%c",&g[i][j]);//二维数组无需&
}


for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        if(g[i][j]=='@'){
            st[i][j]=1;
            dfs(i,j);
        }
    }
}
res++;//开头也要算,dfs从下一步起
printf("%d\n",res);
return 0;
}
2024/12/1 10:23
加载中...