2020-2-16

问题 H: 偶数字符串

时间限制: 1 Sec  内存限制: 128 MB
[提交] [状态]

题目描述

对字符串的处理与操作是程序设计中永恒的主题之一,也是一项很重要的基本功。你对字符串熟悉吗?
给你n(1≤n≤20)个字符串(1≤字符串长度≤2000),所有的字符串中最多包含‘A’到‘N’这14种大写字母。从中选取若干个字符串,使得被选取的字符串中出现的每种字母总数均为偶数,请编程计算最多可以选取多少个字符串?

输入

输入共n+1行。
第1行一个整数n,表示共有多少个字符串。
接下来n行,每行一个无序的字符串,字符串中最多包含‘A’到‘N’ 这14种大写字母(不考虑行末回车等不可见字符)。

输出

输出共1行,表示最多可以选取的字符串数目。

样例输入 Copy

2
A
AD

样例输出 Copy

0

提示

输入样例中的2个字符串不管如何选择都不能保证每种字母加起来都是偶数。

对于50%的数据,1≤n≤15,1≤字符串长度≤200,且字符串中最多包含‘A’到‘G’ 7种不同字母。
对于100%的数据,1≤n≤20,1≤字符串长度≤2000,且字符串中最多包含‘A’到‘N’ 14种不同字母。

扫描二维码关注公众号,回复: 9217262 查看本文章

测试样例

1 2 1

abcs-w

1234-9s-4zz

2 3 2

a-d-d

3 4 2

di-jkstra2-6

#include <bits/stdc++.h>
using namespace std;
const int mod=2e5+5;
typedef long long ll;
int main()
{
    int p1,p2,p3;
    scanf("%d%d%d",&p1,&p2,&p3);
    char str[105];
    scanf("%s",str);
    int len=strlen(str);
   // char last;
    for(int i=0; i<len; i++)
    {
         if(i==0||i==len-1)
           {
                printf("%c",str[i]);
                continue;
            }
        if(str[i]=='-'&&str[i-1]<str[i+1])
        {
            int f1=0,f2=0;
            if(str[i-1]>='0'&&str[i-1]<='9'&&str[i+1]>='0'&&str[i+1]<='9')
            {
                f1=1;
            }
            if(str[i-1]>='a'&&str[i-1]<='z'&&str[i+1]>='a'&&str[i+1]<='z')
            {
                f2=1;
            }
            if(f1+f2==0)
            {
                printf("%c",str[i]);
                continue;
            }
            if(f1==1||f2==1)
            {
               if(p3==1)//顺序
                    {
                        //last=str[i+1]-1;
                        for(char k=str[i-1]+1; k<=str[i+1]-1; k++)
                        {
                            for(int j=1; j<=p2; j++)
                                {
                                    if(p1==2&&f2==1)
                                    {
                                       printf("%c",k+'A'-'a');
                                    }
                                    else if(p1==3)
                                    {
                                        printf("*");
                                    }
                                     else
                                      {
                                           printf("%c",k);
                                      }

                                }
                        }

                    }
               if(p3==2)//逆序
                    {
                       // last=str[i-1]+1;
                        for(char k=str[i+1]-1; k>=str[i-1]+1; k--)
                        {
                            for(int j=1; j<=p2; j++)
                               {
                                   if(p1==2&&f2==1)
                                    {
                                       printf("%c",k+'A'-'a');
                                    }
                                    else if(p1==3)
                                    {

                                        printf("*");
                                    }
                                     else
                                        printf("%c",k);

                               }
                        }
                    }
                }
        }
       else
       {
            printf("%c",str[i]);
       }
    }

return 0;
}
发布了32 篇原创文章 · 获赞 1 · 访问量 1329

猜你喜欢

转载自blog.csdn.net/QXK_Jack/article/details/104348975
今日推荐