2016-01-21 104 views
-2

所以我有一個程序,應該根據輸入的信息來匹配保姆。雙方的所有信息都保存在鏈接列表中。是否可以將來自保姆鏈接列表的數據與父鏈接列表進行匹配?而且也使它輸出類似「__可能匹配你」在兩個不同的鏈接列表中匹配數據

+0

Java還是Javascript?他們不一樣,甚至是相關的。 – Barmar

+0

它的Java我認爲它自動添加標籤或東西 –

+0

這取決於你的意思是「匹配」。它也很大程度上取決於數據如何存儲在鏈接列表中。 – Daniel

回答

0

如果你沒有太多的數據,解決問題的簡單,但效率不高的方式是:

boolean matches(Person person, BabySitter babySitter) { 
    // implement a logic that returns whether babySitter and person match 
    return person.getNumberOfChildren() <= babySitter.getMaximumNumberOfChildren() && 
     babySitter.getWorkingDays().containsAll(person.needsBabySitterForDays()); 
} 

for (Person person: people) { 
    for (BabySitter babySitter: babySitters) { 
     if (matches(person, babySitter)) { 
      System.out.println("Babysitter " + babySitter + " is recommended to " + person); 
     } 
    } 
} 

上述算法需要O( b * p)時間,其中b =保姆人數,p =人數。所以對於大b和p來說,它很慢。

基於matches的邏輯,您可以通過反向索引獲得接近O(b + p)的解。所以如果你有10,000個保姆和10,000個人,這個優化的解決方案會運行得非常快,而上面的算法需要幾秒鐘。

+0

你應該在內部循環中加入一個'break'語句。一旦找到匹配項,就不需要繼續搜索。 – Barmar

+0

@Barmar從OP中不清楚,預計是否有單個或多個建議。 –

+0

這將是匹配的孩子數量和你需要的嬰兒坐在一週的日子你可以照顧的孩子的數量和一週的工作日數量 –

相關問題