前文
愿天下有情人都是失散多年的兄妹 与 冰岛人 解题思路几乎是同理的,不过这里需要考虑多一个是否嫡系的关系。
(卡了我好久、又来一个隐藏条件,长知识、长知识…)。
用递归实现很容易出现超时,循环果然比递归效率高。
循环与递归效率的比较
冰岛人
解题难点
①、记录数据——映射+结构体
struct node{
string fa;
int sex;
};
map <string, node> num;
第一次把映射和结构体结合起来,查询方便了许多。
②、判断 m1 与 m2 是否是嫡亲
//判断 s1 是否为 s2 的嫡系
bool judge1(string s1, string s2){
for(string A=s1; !A.empty(); A=num[A].fa)
if(A==s2) return false;
return true;
}
③、m1 与 m2 五代以内无有公共祖先
//s1与s2五代以内无有公共祖先
bool judge2(string s1, string s2){
int i=1;
string A, B;
for(A=s1; !A.empty()&&i<=5; i++){