Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码学校的最佳位置_Javascript_Algorithm_Sorting_Distance - Fatal编程技术网

Javascript 代码学校的最佳位置

Javascript 代码学校的最佳位置,javascript,algorithm,sorting,distance,Javascript,Algorithm,Sorting,Distance,这是来自代码战,但我不是在寻找欺骗或任何东西。我几乎解决了这个问题,但我不确定我确定什么是最佳位置的方法是否正确 var optimumLocation = function(students, locations){ //your solution var listOfLocations = []; for (var key in locations) { var obj = locations[key]; var totalDistance = 0;

这是来自代码战,但我不是在寻找欺骗或任何东西。我几乎解决了这个问题,但我不确定我确定什么是最佳位置的方法是否正确

var optimumLocation = function(students, locations){
  //your solution
  var listOfLocations = [];  
  for (var key in locations) {
    var obj = locations[key];
    var totalDistance = 0;
    for (var i = 0; i <= students.length-1; i+=1) {
      console.log(students[i]);
      var location = calculateDistance(students[i],[obj.x, obj.y]);
      totalDistance += location;
    }

    listOfLocations.push({id:parseInt(key), dist:totalDistance});

  }

  listOfLocations.sort(function(a,b){
      return a.dist - b.dist;
  });

  console.log(listOfLocations);
  var id = listOfLocations[0].id;
  return "The best location is number " + (id +1) + " with the coordinates x = " + locations[id].x + " and y = " + locations[id].y;
}

function  calculateDistance (loc1, loc2) {
  var distX = Math.abs(loc1[0] - loc2[0]);
  var distY = Math.abs(loc1[1] - loc2[1]);


  var distance = Math.sqrt(distX*distX + distY*distY);

  return distance;

};
一切都很好

但是对于第二个测试用例

optimumLocation([[152,7],[1,211],[14,56],[12,4],[142,7]],[{id: 1, x: 63, y: 55}, {id: 2, x: 55, y: 21},{id: 3, x: 144, y: 12}]);
正确的位置是位置2,但我的函数认为它是位置1。然而,我的方法是使用所有学生出行的总距离最小,位置1的出行距离最小,因此实际上应该是位置2的最佳解决方案


任何帮助都将不胜感激。

我自己已经设法解决了这个问题。对于那些想知道的人,我只是把问题复杂化了。问题是学生只能走直线,不能走对角线。因此,我不用毕达哥拉斯定理,只需将x和y距离相加,就可以算出总距离。

我自己已经设法解决了这个问题。对于那些想知道的人,我只是把问题复杂化了。问题是学生只能走直线,不能走对角线。因此,我不用毕达哥拉斯定理,只需将x和y距离相加,就可以得到总距离

optimumLocation([[152,7],[1,211],[14,56],[12,4],[142,7]],[{id: 1, x: 63, y: 55}, {id: 2, x: 55, y: 21},{id: 3, x: 144, y: 12}]);