POJ_2159

//164k  16ms

#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>

using namespace std;

int main() {
  char cc[26], mc[26];
  memset(cc, 0, 26);
  memset(mc, 0, 26);
  char input[101];
  scanf("%s", input);
  for (char *i = input; *i; cc[*i - 'A']++, ++i) {}
  scanf("%s", input);
  for (char *i = input; *i; mc[*i - 'A']++, ++i) {}
  sort(cc, cc + 26);
  sort(mc, mc + 26);
  int i = 0;
  for ( ; i < 26 && cc[i] == mc[i]; ++i) {}
  if (i < 26) printf("NO");
  else printf("YES");
  return 0;
}


notes:

1. 题目是关于密码的,substitution加密和permutation加密,比较有意思,但是题目出的实在是太水了,关键是正确理解conjecture,因为题目中没有给出任何的解密相关信息,因此题目实际是要求验证给出的密文能否由明文通过两种加密方法得到,即只考虑出现频率,不用关心具体的加密方法。

2. poj的c++编译器明显比g++编译器memory和time少,原因未知。

3. string类的size()和length()一样, algorithm中的sort()函数可以用在数组上,即RandomAccessIterator也包括元素指针,两者可以认为等价,assign()函数也有range和fill两种形式。

4. istream& getline (istream& is, string& str, char delim), c++<string>中,读到delim会丢掉,默认‘\n’。

    还有一个成员函数std::istream::getline,istream& getline (char* s, streamsize n, char delim ),可以向c-string中读,遇到delim或者读入n个char后结束(包括null),注意,这个函数是不安全的,如果n大于buf的size(),stackoverflow。

5. <stdio.h>的char * gets ( char * str ),如果遇到eof,则返回null。cin.get()有重载,可以输入一个char也可以是一个char*,string,可以指定n和gets一样,不会丢弃。cin<< 注意也丢弃

6. freopen(), fclose()也很有用。

7. http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html , cin的文章。

8. cin.get()输入超长时,剩下内容留在缓冲中,而cin.getline()则会使cin出错,后面的cin操作不执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值