ZSQ

新的一天,新的不会

POJ 2159 Ancient Cipher(水~)

Description
该题的关键就是只要知道原来信息和加密后的信息中字母的频数相同则为YES
Input
两个字符串分别表示原来信息和加密后的信息
Output
若两信息中个字母频数相同则输出YES,否则输出NO
Sample Input
JWPUDJSTVP
VICTORIOUS
Sample Output
YES
Solution
简单字符串处理,统计两串中个字母的频数,分别排完序后一一比较,全部相同则YES,否则NO
Code

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
    return *(int*)a>*(int*)b?1:-1;
}
int main()
{
    int a[26]={0},b[26]={0},i,j,k,t,lena,lenb;
    char ca[1000],cb[1000];
    gets(ca);
    gets(cb);
    lena=strlen(ca);
    lenb=strlen(cb);
    if(lena!=lenb)//如果两串长度都不相同则不可能满足条件 
        printf("NO\n");
    else
    {
        for(i=0;i<lena;i++)//统计两串各字母频数 
        {
            a[ca[i]-'A']++;
            b[cb[i]-'A']++;
        }
        qsort(a,26,sizeof(int),cmp);//排序 
        qsort(b,26,sizeof(int),cmp);
        for(i=0;i<26;i++)//一一比较 
        {
            if(a[i]==0)//未出现的不用比 
                continue;
            else if(a[i]!=b[i])//不同则不满足条件 
            {
                printf("NO\n");
                return 0;
            }
        }
        printf("YES\n");//满足条件 
    }
    return 0;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/V5ZSQ/article/details/46812621
个人分类: POJ 水题
上一篇POJ 2141 &amp;&amp; HDU 2716 Message Decowding(水~)
下一篇POJ 2163 Easy Trading(水~)
想对作者说点什么? 我来说一句

pku acm 2159 Ancient Cipher代码

2008年04月05日 1KB 下载

没有更多推荐了,返回首页

关闭
关闭