HDU-5578-暴力枚举

来源:互联网 发布:js 方法return 节点 编辑:程序博客网 时间:2024/06/04 22:52

https://vjudge.net/contest/167609#problem/F
给定一个字符串,问你相同字母之间的最近距离。
用一个vector记录各个字母的相对位置。
取最小的。然后两两相减取最小。
为了防止字母第一次出现时的情况,预先填一个数。

#include <iostream>#include <cstdio>#include <vector>#include <cstring>using namespace std;vector<int>a[40];const int maxn=2000;int main(){  int t;   char s[maxn];   scanf("%d",&t);   for(int tt=1;tt<=t;tt++){        scanf("%s",s);        int len=strlen(s);        int min1=1e8;        for(int i=0;i<40;i++)            a[i].push_back(-1e8);        for(int i=0;i<len;i++){            int cc=s[i]-'a';            a[cc].push_back(i+1);            if(min1>a[cc][a[cc].size()-1]-a[cc][a[cc].size()-2])            {min1=a[cc][a[cc].size()-1]-a[cc][a[cc].size()-2];             //printf("%d\n",cc);            }        }        printf("Case #%d: ",tt);        if(min1==1e8)            printf("-1\n");        else        printf("%d\n",min1);   }    return 0;}


原创粉丝点击