unorder_map与vector:一个是一个关键字对应一个值,一个是一个值(下标)对应一个值。
每输入一次两头奶牛的出生年份之间的关系,就记录新出现奶牛的生肖,通过计算出新出现奶牛与另一头奶牛相差的年数,在计算出新出现奶牛与第一头奶牛相差的天数。
#include<bits/stdc++.h>
using namespace std;
unordered_map<string, int> id = {
{"Ox", 0}, {"Tiger", 1}, {"Rabbit", 2},
{"Dragon", 3}, {"Snake", 4}, {"Horse", 5},
{"Goat", 6}, {"Monkey", 7}, {"Rooster", 8},
{"Dog", 9}, {"Pig", 10}, {"Rat", 11}
};
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
string s[8];
unordered_map<string,int> xcy,sx;
cin>>n;
sx["Bessie"]=0;
xcy["Bessie"]=0;
for(int i=1;i<=n;i++){
for(int j=0;j<8;j++){
cin>>s[j];
}
if(s[3]=="previous"){
sx[s[0]]=id[s[4]];
if(sx[s[0]]==sx[s[7]]){
xcy[s[0]]=xcy[s[7]]+12;
}
else if(sx[s[0]]>sx[s[7]]){
xcy[s[0]]=xcy[s[7]]+(12-(sx[s[0]]-sx[s[7]]));
}
else{
xcy[s[0]]=xcy[s[7]]+(sx[s[7]]-sx[s[0]]);
}
}
else{
sx[s[0]]=id[s[4]];
if(sx[s[0]]==sx[s[7]]){
xcy[s[0]]=xcy[s[7]]-12;
}
else if(sx[s[0]]>sx[s[7]]){
xcy[s[0]]=xcy[s[7]]-(sx[s[0]]-sx[s[7]]);
}
else{
xcy[s[0]]=xcy[s[7]]-(12-(sx[s[7]]-sx[s[0]]));
}
}
}
cout<<abs(xcy["Elsie"]);
return 0;
}