hdu 5842 Lweb and String 水题坑

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5842

【题意】根据由小写字母组成的字符串A求其“映射”所得的自然数序列B的严格LIS最长上升子序列

【解题思路】由于每一个字母只能对应一个自然数,所以结果最大为26。被题意坑,以为字母和自然数的顺序是一一对应的,实际上不是,只要替换成最大LIS即可。所以A串中有多少个不同的字符,结果就是多少。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 100009;
int flag[30];
int main()
{
    int t;
    char s[maxn];
    scanf("%d",&t);
    getchar();
    for(int k=1;k<=t;k++)
    {
        scanf("%s",s);
        memset(flag,0,sizeof(flag));
        int n=strlen(s),ans=0;
        for(int i = 0; i < n; i++)
        {
            flag[s[i]-'a']=1;
        }
        for(int i=0;i<26;i++)
        {
            if(flag[i]) ans++;
        }
        printf("Case #%d: %d\n",k,ans);
    }
    return 0;
}

 

posted @ 2016-08-15 15:18  Colarise  阅读(94)  评论(0)    收藏  举报