POJ 1167 解題報告

這題是拿來練習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,可以利用這個來剪枝。

 

說的不是很清楚,邊看代碼邊看思路吧

 

代碼如下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章