看到大致思路一致的题解,决定发一篇运用STL不用dfs的题解     好久不发题解,心里不爽

思路:

1.输入的同时找到总统桌子的位置,用vector<pair <int,int> >记录横坐标和纵坐标
2.在总统桌子周围找到其他桌子,并用set记录(set可以去重)
3.打印set的长度,即周围桌子的数量


Code:

#include <bits/stdc++.h>
using namespace std;
const int N=;
char c[N][N];
int n,m;
char pt;
set<char> s;
vector< pair<int,int> > v;
int dx[]={,,-,},dy[]={,-,,};
int main() {
cin>>n>>m;
cin>>pt;
for(int i=;i<=n;i++) {
for(int j=;j<=m;j++) {
cin>>c[i][j];
if(c[i][j]==pt) v.push_back(make_pair(i,j));
}
}
for(int i=;i<v.size();i++) {
int x,y;
x=v[i].first;
y=v[i].second;
for(int j=;j<;j++) {
int nx=x+dx[j],ny=y+dy[j];
if(c[nx][ny]>='A' && c[nx][ny]<='Z' && c[nx][ny]!=pt) s.insert(c[nx][ny]);
}
}
cout<<s.size()<<endl;
return ;
}
05-24 05:10