九度OJ 題目1035 找出直系親屬

2021-07-04 09:49:09 字數 1115 閱讀 5183

一.題目描述:

如果a,b是c的父母親,則a,b是c的parent,c是a,b的child,如果a,b是c的(外)祖父,祖母,則a,b是c的grandparent,c是a,b的grandchild,如果a,b是c的(外)曾祖父,曾祖母,則a,b是c的great-grandparent,c是a,b的great-grandchild,之後再多一輩,則在關係上加乙個great-。

輸入:

輸入包含多組測試用例,每組用例首先包含2個整數n(0<=n<=26)和m(0樣例輸入:

3 2abc

cdeefg

fabe

0 0樣例輸出:

great-grandparent

-二.題目分析.

調了半天,終於ac了。。但是看完題解,瞬間被自己蠢哭了,總是這麼不機智可怎麼好。。。b,c是a的雙親,所以a的孩子是c,b的孩子是c,完美的單射關係,從雙親找孩子匹配,就是強大並查集應用,太完美了。我卻從孩子匹配雙親,a的雙親是c,b,非要搞成一對多對映,從孩子找雙親,每次要考慮兩個雙親。其實第一眼看到時候,感覺和並查集很像,但是想到兩個雙親,沒辦法對映,於是又放棄了,有時候就是一瞬間靈活的問題,但願我慢慢機智起來!

三.**

1.遞迴

#include #include //0<=n<=26 01)

printf("grandparent\n");

}else //parent

while(ans>1)

printf("grandchild\n");}}

}return 0;

}

2.並查集

#includeusing namespace std;

int tree[1001]; //孩子節點

int relation(int a, int b)

return -1;}

int main()

while (m--)

if (t == 2)

if (t == 1)

}//else

}//while m

}return 0;

}



題目1035 找出直系親屬

題目描述 如果a,b是c的父母親,則a,b是c的parent,c是a,b的child,如果a,b是c的 外 祖父,祖母,則a,b是c的grandparent,c是a,b的grandchild,如果a,b是c的 外 曾祖父,曾祖母,則a,b是c的great grandparent,c是a,b的grea...

題目1035 找出直系親屬

題目描述 如果a,b是c的父母親,則a,b是c的parent,c是a,b的child,如果a,b是c的 外 祖父,祖母,則a,b是c的grandparent,c是a,b的grandchild,如果a,b是c的 外 曾祖父,曾祖母,則a,b是c的great grandparent,c是a,b的grea...

Jobdu 題目1035 找出直系親屬

題目描述 如果a,b是c的父母親,則a,b是c的parent,c是a,b的child,如果a,b是c的 外 祖父,祖母,則a,b是c的 grandparent,c是a,b的grandchild,如果a,b是c的 外 曾祖父,曾祖母,則a,b是c的great grandparent,c是a,b的gre...