zoukankan      html  css  js  c++  java
  • 京东2016校园实习生招聘系统测试岗在线笔试编程题

    试题一:复习安排

    输入包含多组测试数据。首先输入一行包含两个数据复习的天数d和所用总时间sumtime。

    接下来的d行,每一行含有两个数据,分别表示父亲希望儿子复习的时间的下线imintime和上限imaxtime。

    儿子只记录了复习所用总时间数,但是为了向父亲汇报,他必须要汇报出每天安排的复习时间数,以完成父亲的要求,请帮助他设计每天复习的时间。

    如果无法完成安排,则输出“No”;如果可以完成安排,则输出"Yes",并且输出安排每天复习的时间数。为了博得父亲的开心,他希望使得前期复习的时间数尽量多。

    输入测试:

    1 48

    2 7

    2 5

    0 1

    3 5

    输出测试:

    No

    Yes

    1 4

    代码实现:

     1 #include <iostream>
     2 #include <vector>
     3 
     4 using namespace std;
     5 
     6 struct Limit
     7 {
     8     int imintime;
     9     int imaxtime;
    10 };
    11 
    12 typedef struct Limit limit;
    13 
    14 
    15 int main()
    16 {
    17     int d, sumtime;
    18     while (cin >> d >> sumtime)
    19     {
    20 
    21     limit *num = new limit[d];
    22     int totalmin = 0;
    23     int totalmax = 0;
    24     int left = sumtime;
    25     vector<int> vec(d,0);
    26     for (int i = 0; i<d; ++i)
    27     {
    28         cin >> num[i].imintime >> num[i].imaxtime;
    29         totalmin += num[i].imintime;
    30         totalmax += num[i].imaxtime;
    31         vec[i] = num[i].imintime;
    32         left -= vec[i];
    33     }
    34 
    35 
    36     int temp;
    37     if (sumtime<totalmin || sumtime>totalmax)
    38     {
    39         cout << "No" << endl;
    40         continue;
    41     }
    42     else if (sumtime >= totalmin&&sumtime <= totalmax)
    43     {
    44         for (int i = 0; i < d; ++i)
    45         {
    46             if (left>0)
    47             {
    48                 if (left >= num[i].imaxtime-num[i].imintime)
    49                 {
    50                     vec[i] = num[i].imaxtime;
    51                     left = left-(num[i].imaxtime-num[i].imintime);
    52                 }
    53                 else
    54                 {
    55                     vec[i] += left;
    56                     left = 0;
    57                 }
    58             }
    59         }
    60     }
    61 
    62     cout << "Yes" << endl;
    63     for (int i = 0; i < vec.size(); i++)
    64     {
    65         if (i < vec.size() - 1)
    66         {
    67             cout << vec[i] << " ";
    68         }
    69         else
    70             cout << vec[i] << endl;
    71     }
    72     }
    73     system("pause");
    74     return 0;
    75 }

    用例测试:

    试题二:选举游戏

    每一组测试数据包含两行,第一行只有一个数据d,表示候选人的总数。

    第二行包含一组数据,表示这d个候选人当前的最大可能得票数。

    其中这组数据的第一个是你本人的得票数,为了使得自己能够成功在本次选举中获胜(票数最高),请设计出你最少需要拉多少票,以及从每个其他候选人身上拉得的票数。

    代码实现:

     1 #include <iostream>
     2 #include <vector>
     3 
     4 using namespace std;
     5 
     6 
     7 int getmaxindex(vector<int> myvec)
     8 {
     9     int index = 0;
    10     int max = 0;
    11     for (int  i = 0; i < myvec.size(); i++)
    12     {
    13         if (myvec[i]>=max)
    14         {
    15             max = myvec[i];
    16             index = i;
    17         }
    18     }
    19     return index;
    20 }
    21 
    22 int main()
    23 {
    24     int d;
    25     cin >> d;
    26     vector<int> vec(d, 0);
    27     for (int  i = 0; i < d; i++)
    28     {
    29         cin >> vec[i];
    30     }
    31     int original = vec[0];
    32     vector<int> original_vec(vec.begin(),vec.end());
    33     while (1)
    34     {
    35         if (getmaxindex(vec) != 0)
    36         {
    37             vec[getmaxindex(vec)]--;
    38             vec[0]++;
    39         }
    40         else
    41             break;
    42     }
    43     cout << vec[0] - original << endl;
    44 
    45     for (int i = 1; i < d; i++)
    46     {
    47         if (i < d - 1)
    48             cout << original_vec[i] - vec[i] << " ";
    49         else
    50             cout << original_vec[i] - vec[i] << endl;
    51 
    52     }
    53 
    54     system("pause");
    55     return 0;
    56 }

    用例测试:

  • 相关阅读:
    ThinkSNS+ PHP开发概述
    基础知识--封装、继承、多态、抽象
    读书笔记--《你在为谁工作》
    深入理解设计模式(终):总结--设计模式是药,没病就不要吃药
    深入理解设计模式(24):外观模式
    深入理解设计模式(23):代理模式
    深入理解设计模式(22):享元模式
    深入理解设计模式(21):组合模式
    深入理解设计模式(20):桥接模式
    深入理解设计模式(19):装饰模式
  • 原文地址:https://www.cnblogs.com/lou424/p/5374493.html
Copyright © 2011-2022 走看看