1. 程式人生 > >A. 【NOIP2018 模擬賽day1】古代密碼

A. 【NOIP2018 模擬賽day1】古代密碼

這道題一開始讀的時候以為是深搜,仔細一想可以發現-----尼瑪這道題為什麼需要去判斷順序呢?(是不是發現自己被坑了?)

其實這道題的實質就是模擬判斷一下字母就可以了。

直接上程式碼:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
string a,b;//原文加翻譯
int time_a[1001];//統計原文中出現的字母的次數
int time_b[1001];//統計翻譯中出現的字母的次數
int main(){
	cin>>a;//cin可以直接讀入字串
	cin>>b;
	
	if(a.length()!=b.length()){//如果他們的長度都不相等的話就直接判斷為錯了。
		cout<<"NO";
		return 0;
	}
	
	int len=a.length();//用一個變數來儲存長度
	for(int i=0;i<len;i++)//來判斷出現的字母的次數
	{
		time_a[a[i]-'A']++;//因為是字元,所以要減去一個A來表示
		time_b[b[i]-'A']++;
	}
	
	sort(time_a,time_a+26);//字母有26個
	sort(time_b,time_b+26);
	
	for(int i=0;i<26;i++){//如果次數不同的話就錯了
		if(time_a[i]!=time_b[i]){
			cout<<"NO";
			return 0;
		}
	}
	
	cout<<"YES";
	return 0;
}