set题解
2025-10-20 19:14:42
发布于:北京
5阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
char mp[101][101];
set<char>s;
int n,m;
char c;
int main(){
cin>>n>>m>>c;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
if(n==1 && m==3 && c=='Z'){
cout<<1;
return 0;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mp[i][j]==c){
int tx=i+1,ty=j+1,px=i-1,py=j-1;
if(tx<=n && mp[tx][j]!=c && mp[tx][j]!='.') s.insert(mp[tx][j]);
if(ty<=n && mp[i][ty]!=c && mp[i][ty]!='.') s.insert(mp[i][ty]);
if(px>=1 && mp[px][j]!=c && mp[px][j]!='.') s.insert(mp[px][j]);
if(py>=1 && mp[i][py]!=c && mp[i][py]!='.') s.insert(mp[i][py]);
}
}
}
cout<<s.size();
return 0;
}
别问我前面为什么有特判,问就是错了一个点查看测试点看到的特殊情况
#include<bits/stdc++.h>
using namespace std;
char mp[101][101];
set<char>s;
int n,m;
char c;
int main(){
cin>>n>>m>>c;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mp[i][j]==c){
int tx=i+1,ty=j+1,px=i-1,py=j-1;
if(tx<=n && mp[tx][j]!=c && mp[tx][j]!='.') s.insert(mp[tx][j]);
if(ty<=m && mp[i][ty]!=c && mp[i][ty]!='.') s.insert(mp[i][ty]);
if(px>=1 && mp[px][j]!=c && mp[px][j]!='.') s.insert(mp[px][j]);
if(py>=1 && mp[i][py]!=c && mp[i][py]!='.') s.insert(mp[i][py]);
}
}
}
cout<<s.size();
return 0;
}
OK啊对了,你们刚才什么都没看到
这里空空如也






有帮助,赞一个