2016-01-21 72 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

这将是匹配的孩子数量和你需要的婴儿坐在一周的日子你可以照顾的孩子的数量和一周的工作日数量 –