zoukankan      html  css  js  c++  java
  • 2、赶去公司--网易2017春招

    [编程题] 赶去公司
    时间限制:1秒
    空间限制:32768K
    终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急bug。假设市区是一个无限大的区域,每条街道假设坐标是(X,Y),小易当前在(0,0)街道,办公室在(gx,gy)街道上。小易周围有多个出租车打车点,小易赶去办公室有两种选择,一种就是走路去公司,另外一种就是走到一个出租车打车点,然后从打车点的位置坐出租车去公司。每次移动到相邻的街道(横向或者纵向)走路将会花费walkTime时间,打车将花费taxiTime时间。小易需要尽快赶到公司去,现在小易想知道他最快需要花费多少时间去公司。 
    输入描述:
    输入数据包括五行:
    第一行为周围出租车打车点的个数n(1 ≤ n ≤ 50)
    第二行为每个出租车打车点的横坐标tX[i] (-10000 ≤ tX[i] ≤ 10000)
    第三行为每个出租车打车点的纵坐标tY[i] (-10000 ≤ tY[i] ≤ 10000)
    第四行为办公室坐标gx,gy(-10000 ≤ gx,gy ≤ 10000),以空格分隔
    第五行为走路时间walkTime(1 ≤ walkTime ≤ 1000)和taxiTime(1 ≤ taxiTime ≤ 1000),以空格分隔
     
     
    输出描述:
    输出一个整数表示,小易最快能赶到办公室的时间
     
    输入例子:
    2 -2 -2 0 -2 -4 -2 15 3
     
    输出例子:
    42
     
    解题思路:本题定义结构体存储各点的横坐标、纵坐标、距离起始点的距离、距离终点的距离、以及经过该点到达终点总用时。按点进行遍历,获得最小时间。
     
    注意点:1)有可能完全走着的时间更小,因此min初始值为完全走着的时间
           2)输入的格式,不是按照一个点分别输入横纵坐标,而是先输入所有点的横坐标,然后再   输入所有点的纵坐标
     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 struct Point
     5 {
     6     int x;
     7     int y;
     8     int dis0;
     9     int dis1;
    10     int sum;
    11 };
    12 int main()
    13 {
    14     int n;
    15     while(cin>>n)
    16     {
    17         Point p[n+1];
    18         for(int i=0;i<n;i++)
    19         {
    20             cin>>p[i].x;
    21         }
    22         for(int i=0;i<n;i++)
    23         {
    24             cin>>p[i].y;
    25         }
    26         cin>>p[n].x>>p[n].y;
    27         int walktime;
    28         int taxitime;
    29         int min;
    30         int walk;
    31         cin>>walktime>>taxitime;
    32         for(int i=0;i<n;i++)
    33         {
    34            p[i].dis0 = abs(p[i].x) + abs(p[i].y);
    35            p[i].dis1 = abs(p[n].x - p[i].x) + abs(p[n].y - p[i].y);
    36            p[i].sum = p[i].dis0 * walktime + p[i].dis1 * taxitime;
    37         }
    38         walk = abs(p[n].x) + abs(p[n].y);
    39         min = walk*walktime;
    40         for(int i=0;i<n;i++)
    41         {
    42             if(p[i].sum < min)
    43                 min = p[i].sum;
    44         }
    45         cout<<min<<endl;
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/qqky/p/6908635.html
Copyright © 2011-2022 走看看