第一次见MLE
2023-12-23 12:24:03
发布于:上海
84阅读
0回复
0点赞
所以哪错了
#include<iostream>
using namespace std;
char s[110][110];
char p;
int n,m, ans;
int vis[110];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
void dfs(int x,int y) {
for(int k=0;k<4;k++){
int tx=x+dx[k];
int ty=y+dy[k];
if(tx<0 || tx>=n || ty<0 || ty>=m) continue;
if(s[tx][ty]!='.'){
if(s[tx][ty]!=p){
vis[s[tx][ty]-'A'+1]=1;
s[tx][ty]='.';
}
}
else{
s[tx][ty]='.';
dfs(tx,ty);
}
}
}
int main(){
cin>>n>>m>>p;
for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>s[i][j];
for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(s[i][j] == p) dfs(i,j);
for(int i=1;i <= 26;i++) if(vis[i]) ans++;
cout<<ans;
return 0;
}
全部评论 2
MLE,内存超限
2024-08-17 来自 广东
0我知道啊
2024-08-18 来自 上海
0
帮你测试了,输入那里、以及循环那里可以加个break,其他都没问题。
2023-12-24 来自 广东
0过了,谢谢。但是为什么我把scanf改成cin不行?
2023-12-24 来自 上海
0好像是因为电脑里回车也是一个字符‘\n’
2024-01-23 来自 浙江
0
有帮助,赞一个