看到大致思路一致的题解,决定发一篇运用STL不用dfs的题解 好久不发题解,心里不爽
思路:
1.输入的同时找到总统桌子的位置,用vector<pair <int,int> >记录横坐标和纵坐标
2.在总统桌子周围找到其他桌子,并用set记录(set可以去重)
3.打印set的长度,即周围桌子的数量
Code:
#include <bits/stdc++.h> using namespace std; const int N=110; char c[N][N]; int n,m; char pt; set<char> s; vector< pair<int,int> > v; int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0}; int main() { cin>>n>>m; cin>>pt; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>c[i][j]; if(c[i][j]==pt) v.push_back(make_pair(i,j)); } } for(int i=0;i<v.size();i++) { int x,y; x=v[i].first; y=v[i].second; for(int j=0;j<4;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 0; }