根据题目的要求模拟即可,就是稍微复杂了点hh
记录每个牛的生肖,然后按照每一条提示算出与那个万恶的Bessie之间生肖的关系。
#include <bits/stdc++.h>
using namespace std;
int n;
map<string, int> x, name, ans;
int main(){
scanf("%d", &n);
x["Rat"] = 1; x["Ox"] = 2; x["Tiger"] = 3; x["Rabbit"] = 4; x["Dragon"] = 5; x["Snake"] = 6; x["Horse"] = 7; x["Goat"] = 8; x["Monkey"] = 9; x["Rooster"] = 10; x["Dog"] = 11; x["Pig"] = 12;
name["Bessie"] = 2; ans["Bessie"] = 0;
for(int i = 1;i<=n;i++){
string a, b, c, d;
cin >> a >> b >> b >> b >> c >> d >> d >> d; //读掉一些不需要的东西
name[a] = x[c]; //记录生肖
if(b[0] == 'p') //pre
if (x[c] < name[d]) ans[a] = ans[d] - name[d] + x[c];
else ans[a] = ans[d] - (name[d] + 12 - x[c]);
else //next
if (x[c] > name[d]) ans[a] = ans[d] + x[c] - name[d];
else ans[a] = ans[d] + 12 - name[d] + x[c];
}
printf("%d\n", abs(ans["Elsie"]));
return 0;
}
请问为什么要name[“Bessie”] = 2呢?为什么不给个0?
因为
万恶的Bessie它是牛年,然而我们这个代码是由鼠为“1”,所以牛就是“2”。这个
烦死人的特讨厌的Bessie是牛年,那么它就标记为2啦!“万恶的Bessie”
为什么第二个判断条件就变成大于了呢
一个是next一个是pre呀
%%%
请问如果奶牛的名字比year 和from短的话,string d会出问题么
哪个奶牛的名字?不过string的读取不是按空格和回车划分 的吗
应该不会呀,和长度没有关系
tql
tqltql
判断用for不会更方便么
啊这
大佬nb
Orz,我很菜的
真快啊,大佬
hhh