0

我知道 dijkstra、prim、kruskal 等算法,但我不知道如何解决以下问题。

我有一个具有整数值的城市列表。我有一个函数,它根据传递的距离范围计算给定城市的距离。如果您将一个城市传递给函数,并且距离为 20 公里,则将返回与给定城市距离为该距离的所有城市。

条件:

  • 我想将所有大于给定值限制的城市设置为父级。
  • 如果一个父城市在给定距离内有另一个价值更大的城市父城市,则设置为价值更大的城市父城市和价值较小的子城市。
  • 对于所有子城市,将在给定距离内具有更多价值的城市父级设置为父级,如果没有父级城市,则子级城市将没有父级。

对不起,如果我不能很好地解释我。

编辑:

我添加了一些伪代码来帮助您解决问题:

//Get array of cities ordered ASC by value and each city is marked as parent or not.
$cities = getCitiesByValue(); 

foreach($cities as $city) {

  if($city->isParent) {
    //Get near(20km) PARENT cities ordered  ASC
    $nearCities = findNearBy($city, $distance = 20); 

    foreach($nearCities as $nearCity) {

      if($nearCity->value > $city->value) {
        $city->setParent($nCity);
        $city->setAsChild;
      }
    }
  }

  elseif($city->isChild) {
    //Get near(50km) PARENT cities ordered  ASC
    $nearCities = findNearBy($city, $distance = 50);

    foreach($nearCities as $nearCity) {

      if($nearCity->value > $city->value) {
        $city->setParent($nCity);
      }
    }
  }
}
4

0 回答 0