zoukankan      html  css  js  c++  java
  • LA 3213 Ancient Cipher

    LA_3213

        题目的大意是将第二个字符串中的每个字符先做一个一一映射,然后再将各个字符打乱(也就是选择性地变换一下位置),问能否变成第一个字符串。

        这个问题中有一个守恒量,就是各类字符的数量,比如一开始各类字符的数量分别为1、2、2、3的话,那么无论怎么变换,最后各类字符的数量一定还是1、2、2、3,只不过之前有3个的可能是A,而现在变成了有3个的是B,或者Y,或者其他的字符等等。而且,如果各类字符在数量上能够一一对应的话,那么一定可以通过某种手段将第二个字符串变成第一个字符串,所以我们只需判断各类字符的数量上能否一一对应。

    #include<stdio.h>
    #include<string.h>
    #define MAX 130
    char a[MAX], b[MAX];
    int n[MAX];
    int main()
    {
        while(scanf("%s%s", a, b) == 2)
        {
            bool ok = true;
            memset(n, 0, sizeof(n));
            for(int i = 'A'; i <= 'Z'; i ++)
            {
                int cnt = 0;
                for(int j = 0; a[j]; j ++) if(a[j] == i) ++ cnt;
                ++ n[cnt];
                cnt = 0;
                for(int j = 0; b[j]; j ++) if(b[j] == i) ++ cnt;
                -- n[cnt];
            }
            for(int i = 1; i <= 100; i ++) if(n[i]) ok = false;
            puts(ok ? "YES" : "NO");
        }
        return 0;
    }
  • 相关阅读:
    行政区划遮罩 -Leaflet
    WebGIS vs WebGL图形编程
    oracle 中 group by 加强
    Nagios监控服务搭建
    MySQL触发器使用详解
    mybatis--一对多关联
    mybatis--一对一关联查询
    mybatis--实现数据库增删改查
    mybatis--使用接口注解的方式实现Helloword
    mybatis--第一个mybatis程序
  • 原文地址:https://www.cnblogs.com/staginner/p/2760207.html
Copyright © 2011-2022 走看看