美文网首页
leecode 1266-访问所有点的最小时间

leecode 1266-访问所有点的最小时间

作者: WWWWS | 来源:发表于2019-12-10 20:08 被阅读0次

解题思路:

虽然有点暴力,但结果总算是好的。

相邻两点之间需要的时间是:

分别求出横坐标与纵坐标的差值,因为时间,所以取绝对值。然后比较横坐标差值与纵坐标差值,如果横坐标比较大,则时间=纵坐标+(横坐标-纵坐标)。因为它

沿对角方向移动之后,还需要再移动相应的(横坐标-纵坐标)的距离才能到达;如果纵坐标比较大,则时间=横坐标+(纵坐标+横坐标)。如果横坐标与纵坐标相等,

则时间=横坐标差值或者纵坐标差值。

完整代码:


#include <iostream>

#include <vector>

#include <math.h>

using namespace std;

int main(){

    int a,b;

   vector<vector <int>> points;

    int i,j,n;

    cin>>n;   //总共的点数

    vector<int> p;

    for(i=0; i<n; i++){

        cin>>a;  //输入x坐标

        p.push_back(a);

        cin>>b;  //输入y坐标

        p.push_back(b);

        points.push_back(p);

        p.clear();

    }

    int stime=0,time=0,timex=0,timey=0;  //stime:总时间; timex:横坐标差  timey:纵坐标差

    for(i=0; i<points.size()-1; i++){

            timex=abs(points[i][0]-points[i+1][0]);

            timey=abs(points[i][1]-points[i+1][1]);

            if(timex>timey){

                time=timey+(timex-timey);

            }

            if(timex<timey){

                time=timex+(timey-timex);

            }

            if(timex==timey){

                time=timex;

            }

            cout<<time<<endl;

            stime+=time;

    }

   cout<<stime<<endl;

    return stime;

}


相关文章

网友评论

      本文标题:leecode 1266-访问所有点的最小时间

      本文链接:https://www.haomeiwen.com/subject/hvtngctx.html