Allocate bikes to people - First Priority (Closest bike to closest person)

前端 未结 2 1371
南方客
南方客 2021-02-10 01:48

Passing in a grid to a function with bikes and person at locations

[ \'c\' , \'_\' ,\'A\' ,\'_\', \'_\' , \'_\']
[ \'_\' , \'_\' ,\'a\' ,\'_\', \'_\' , \'_\']
[          


        
2条回答
  •  庸人自扰
    2021-02-10 02:26

    I will outline the steps for you

    1. Find the location of Bikes and Person and store them in an Array.
      person = [[0,2],[4,0],[4,5],[5,3]], bikes = [[0,0],[1,2],[2,4],[4,1]];

    2. Define a Class ( lets call it Distance) having following variables:
      person_id: use person index (0, 1, 2, ...) bike_id: use bike index (0, 1, 2, ...) dist: distance between this person and bike

    3. Create an array of Distance objects for each pair of person and bike. So for the above example you will have object values
      [(0, 0, 2), (0, 1, 1), ...(3, 3, 3)]

    4. Sort the array by increasing value of dist
    5. Create two Boolean arrays person_used having same number of elements as number of persons and bike_used having same number of elements as number of bikes(both initialized as false).
      person_used = [false, false, false, false], bike_used = [false, false, false, false]

    6. Iterate through the array. If for the current Distance object person_used[person_id] == false && bike_used[bike_id] == false assign this person to this bike and set both person_used[person_id] and bike_used[bike_id] to true. If either is false you can ignore it.

    7. Stop when each person is assigned a bike.

提交回复
热议问题