這題是拿來練習DFS的。
題中的輸入中,一個時間對應了一輛BUS。
對這個數據進行嘗試搜索。
這裏不是直接對數據進行搜索,而是利用一個數組time[60]
time[x]表示x在輸入數據中出現的次數。
now[x]表示x在已使用的數據中出現的次數。
搜索的思路:
find函數:
1.判斷是否搜索結束
2.如果x無效,那麼跳過。當time[x]-now[x]<=0時,則x無效,也就是說,這個x已經不能使用
3.first[60]存儲了Bus route頭一輛BUS的信息。也就是說,如果x是Bus route頭一輛BUS,那麼first[x]++。
這裏先嚐試x不是Bus route頭一輛BUS,嘗試遍歷每一條Bus route。
4.最後嘗試x是Bus route頭一輛BUS,遍歷。
題中規定了 每個Bus route至少有兩輛BUS,可以利用這個來剪枝。
說的不是很清楚,邊看代碼邊看思路吧
代碼如下