POJ 2159

稍加分析后,你会发现,就是统计次数而已

#include <iostream>
#include <cstdio>
using namespace std;

int a[110],b[110];
int aa[30],bb[30];
char cipher[110],m[110];

int main(){
	while(scanf("%s",cipher)!=EOF){
		scanf("%s",m);
		if(strlen(cipher)!=strlen(m)){
			printf("NO\n");
			continue;
		}
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(aa,0,sizeof(aa));
		memset(bb,0,sizeof(bb));
		a[0]=26;
		b[0]=26;
		for(int i=0;cipher[i]!=‘\0‘;i++){
			a[aa[cipher[i]-‘A‘]]--;
			a[(++aa[cipher[i]-‘A‘])]++;
		}
		for(int i=0;m[i]!=‘\0‘;i++){
			b[bb[m[i]-‘A‘]]--;
			b[(++bb[m[i]-‘A‘])]++;
		}
		bool flag=true;
		for(int i=0;i<110;i++){
			if(a[i]!=b[i]){
				flag=false;
				break;
			}
		}
		if(flag){
			printf("YES\n");
		}
		else{
			printf("NO\n");
		}
	}
	return 0;
}

  

时间: 2024-10-12 10:08:23

POJ 2159的相关文章

poj 2159 Ancient Cipher(水)

Ancient Cipher Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30695   Accepted: 10023 Description Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents w

POJ 2159(判断可重集合相等&amp;hash)

POJ 2159 题目归结为判断两个自然数多集(允许有重复元素的集合)a, b是否相等.用快排比较的效率是O(nlgn). 此题中a.b则分别是每个字母个数集. 下面提出一种O(n)的方法供大家参考. 猜想:若 sum(a^i) = sum(b^i),i = 0, 1, 2, 则 a = b. 证明:? 注意 sum(s^0) 是多集s中元素的数目 sum(s^1) 是多集s中元素的和 sum(s^2) 是多集s中元素的平方和 即比较多集的三个统计值即可.以上算法是AC的.但是我还没有一个满意的

POJ 2159 Ancient Cipher 难度:0

题目链接:http://poj.org/problem?id=2159 #include <cstring> #include <cstdio> #include <cctype> char ch1[102]; char ch2[102]; int n1[102]; int n2[102]; int ch1n[26]; int ch2n[26]; int main(){ scanf("%s %s",ch2,ch1); int len=strlen(c

Poj 2159 / OpenJudge 2159 Ancient Cipher

1.链接地址: http://poj.org/problem?id=2159 http://bailian.openjudge.cn/practice/2159 2.题目: Ancient Cipher Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28064   Accepted: 9195 Description Ancient Roman empire had a strong government system

POJ - 2159 - Ancient Cipher = 水题

http://poj.org/problem?id=2159 题意:给一种加密方式:先打乱,然后把字母换掉.求s串可不可以是t串的密文. 发现就是这种"可以"的情况就是字母的频率图排序后相同. #include<algorithm> #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<map> #include

poj 2159 D - Ancient Cipher 文件加密

Ancient Cipher Description Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form to prevent eavesdropping

POJ 2159 Ancient Cipher

题意:被题意杀了……orz……那个替换根本就不是ASCII码加几……就是随机的换成另一个字符…… 解法:只要统计每个字母的出现次数,然后把数组排序看相不相同就行了…… 代码: #include<stdio.h> #include<iostream> #include<algorithm> #include<string> #include<string.h> #include<math.h> #include<limits.h&

POJ题目分类推荐 (很好很有层次感)

著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094) 初期: 一.基本算法: 枚举. (POJ 1753,POJ 2965) 贪心(POJ 1328,POJ 2109,POJ 2586) 递归和分治法. 递

POJ 刷题指南

OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094) 初期: 一.基本算法: 枚举. (POJ 1753,POJ 2965) 贪心(POJ 1328,POJ 2109,POJ 2586) 递归和分治法. 递推. 构造法.(POJ 3295) 模拟法.(POJ 1068,POJ 2632,POJ 1573,POJ 2993,POJ 2996) 二