Codeforces 6B

来源:互联网 发布:程序员的自我修养txt 编辑:程序博客网 时间:2024/06/16 10:21

前面的题目确实很水啊。

题目大意:给定一个字符串矩阵和一个字符C,求与含C的子字符串矩阵边相邻的字符种类数(大写拉丁字母),n,m<=100。

我的思路是找出所给矩阵的左上右下,暴力枚举四条边相邻的元素,计数器++。

不管多么水的题都要%%%__debug大神。保佑我noip不挂。

#include<cstdio>#include<cstring>#include<cstdlib>#include<cstring>#include<algorithm>#include<iostream>#include<map>using namespace std;const int MAXN=101;char G[MAXN][MAXN]={},Pre;int n,m,x1,y1,x2,y2,flag;map<char,bool> mp;int main(){    int ans=0;    scanf("%d %d %c",&n,&m,&Pre);    for(int i=1;i<=n;i++)    {       scanf("%s",G[i]+1);       for(int j=1;j<=strlen(G[i]+1);j++)        if(G[i][j]==Pre&&!flag)            x1=i,y1=j,flag=1;    }    flag=0;    for(int i=n;i>=1;i--)    for(int j=m;j>=1;j--)        if(G[i][j]==Pre&&!flag)        {x2=i,y2=j,flag=1;break;}    for(int i=x1;i<=x2;i++)    {        mp[G[i][y1-1]]=1;        mp[G[i][y2+1]]=1;    }    for(int i=y1;i<=y2;i++)    {        mp[G[x1-1][i]]=1;        mp[G[x2+1][i]]=1;    }    for(int i='A';i<='Z';i++)    {        if(mp.count(i))ans++;    }    printf("%d\n",ans);}

0 0
原创粉丝点击