華為OD機(jī)試-- 跳格子游戲

題目
地上共有N個格子,你需要跳完地上所有的格子,但是格子間是有強(qiáng)依賴關(guān)系的,跳完前一個格子后,后續(xù)的格子才會被開啟,格子間的依賴關(guān)系由多組steps數(shù)組給出,steps[0]表示前一個格子,steps[1]表示steps[0]可以開啟的格子:
比如[0,1]表示從跳完第0個格子以后第1個格子就開啟了,比如[2,1],[2,3]表示跳完第2個格子后第1個格子和第3個格子就被開啟了
請你計算是否能由給出的steps數(shù)組跳完所有的格子,如果可以輸出yes,否則輸出no
說明:
1.你可以從一個格子跳到任意一個開啟的格子
2.沒有前置依賴條件的格子默認(rèn)就是開啟的
3.如果總數(shù)是N,則所有的格子編號為[0,1,2,3…N-1]連續(xù)的數(shù)組
輸入描述:
輸入一個整數(shù)N表示總共有多少個格子,接著輸入多組二維數(shù)組steps表示所有格子之間的依賴關(guān)系
輸出描述:
如果能按照steps給定的依賴順序跳完所有的格子輸出yes
否則輸出no
示例1
輸入
3
0 1
0 2
輸出
yes
說明
總共有三個格子[0,1,2],跳完0個格子后第1個格子就開啟了,跳到第0個格子后第2個格子也被開啟了,按照0->1->2或者0->2->1的順序都可以跳完所有的格子
示例2
輸入
2
1 0
0 1
輸出
no
說明
總共有2個格子,第1個格子可以開啟第0格子,但是第1個格子又需要第0個格子才能開啟,相互依賴,因此無法完成
示例3
輸入
6
0 1
0 2
0 3
0 4
0 5
輸出
yes
說明
總共有6個格子,第0個格子可以開啟第1,2,3,4,5個格子,所以跳完第0個格子之后其他格子都被開啟了,之后按任何順序可以跳完剩余的格子
示例4
輸入
5
4 3
0 4
2 1
3 2
輸出
yes
說明
跳完第0個格子可以開啟格子4,跳完格子4可以開啟格子3,跳完格子3可以開啟格子2,跳完格子2可以開啟格子1,按照0->4->3->2->1這樣就跳完所有的格子
示例5
輸入
4
1 2
1 0
輸出
yes
說明
總共4個格子[0,1,2,3],格子1和格子3沒有前置條件所以默認(rèn)開啟,格子1可以開啟格子0和格子2,所以跳到格子1之后就可以開啟所有的格子,因此可以跳完所有格子
Java 實現(xiàn):https://renjie.blog.csdn.net/article/details/128044107
Python實現(xiàn):https://renjie.blog.csdn.net/article/details/130712191
C++ 實現(xiàn):https://renjie.blog.csdn.net/article/details/127146413
JavaScript實現(xiàn):https://renjie.blog.csdn.net/article/details/130712207
C實現(xiàn):https://renjie.blog.csdn.net/article/details/130712228