亲宝软件园·资讯

展开

CF6B President's Office 题解

Ryan-Liu 人气:1

看到大致思路一致的题解,决定发一篇运用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;
}

加载全部内容

相关教程
猜你喜欢
用户评论