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; }

浙公网安备 33010602011771号