题解:AT_utpc2012_01 2012年12月02日
题意简洁明了,无需赘述。
观察发现,答案合法当且仅当年与月和日出现每个数字出现的次数一样,每个字母可以用桶记录次数,为了省空间我使用了 map 进行映射。
My Code:
#include<bits/stdc++.h>
using namespace std;
map<char, int> mp, mp2;
int main(){
string s;
cin >> s;
for(int i = 0; i < 4; i ++) mp[s[i]] ++;//年在前4位
for(int i = 5; i < 7; i ++) mp2[s[i]] ++;//月
for(int i = 8; i < 10; i ++) mp2[s[i]] ++;//日
for(int i = 0; i < 4; i ++){//这里看不懂后面解释。
if(mp[s[i]] != mp2[s[i]]){
cout << "no\n";
return 0;
}
}
cout << "yes\n";//ATCoder特性,需输出换行。
return 0;
}
代码中需要解释的那一部分其实很简单,我们要对比年月日的关系,只需要遍历年的元素即可。

浙公网安备 33010602011771号