严选的快递员每天需要送很多个包裹,在货物装车后,需要开着电动车先到0号用户家。送完货后从0号出发,再送到1号用户。然后快递员可以从1号直接到2号用户家,完成送货。但有时候由于路不通的原因,需要先折返回0号,再去2号,如此循环,完成送货。 由于路况复杂,每个用户家只有一条路通往附近的其他一户邻居家,假设每条通路都是1公里。另外快递员的电动车的电是有限的,最多只能开有限的k公里。现在快递员已经在0号用户家送完快递,问快递员最多可以送多少个不重复的用户-笔试面试资料

这是qklbishe.com第8173 篇笔试面试资料
提供答案分析,通过本文《严选的快递员每天需要送很多个包裹,在货物装车后,需要开着电动车先到0号用户家。送完货后从0号出发,再送到1号用户。然后快递员可以从1号直接到2号用户家,完成送货。但有时候由于路不通的原因,需要先折返回0号,再去2号,如此循环,完成送货。

由于路况复杂,每个用户家只有一条路通往附近的其他一户邻居家,假设每条通路都是1公里。另外快递员的电动车的电是有限的,最多只能开有限的k公里。现在快递员已经在0号用户家送完快递,问快递员最多可以送多少个不重复的用户-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

严选的快递员每天需要送很多个包裹,在货物装车后,需要开着电动车先到0号用户家。送完货后从0号出发,再送到1号用户。然后快递员可以从1号直接到2号用户家,完成送货。但有时候由于路不通的原因,需要先折返回0号,再去2号,如此循环,完成送货。
严选的快递员每天需要送很多个包裹,在货物装车后,需要开着电动车先到0号用户家。送完货后从0号出发,再送到1号用户。然后快递员可以从1号直接到2号用户家,完成送货。但有时候由于路不通的原因,需要先折返回0号,再去2号,如此循环,完成送货。                  由于路况复杂,每个用户家只有一条路通往附近的其他一户邻居家,假设每条通路都是1公里。另外快递员的电动车的电是有限的,最多只能开有限的k公里。现在快递员已经在0号用户家送完快递,问快递员最多可以送多少个不重复的用户
由于路况复杂,每个用户家只有一条路通往附近的其他一户邻居家,假设每条通路都是1公里。另外快递员的电动车的电是有限的,最多只能开有限的k公里。现在快递员已经在0号用户家送完快递,问快递员最多可以送多少个不重复的用户
严选的快递员每天需要送很多个包裹,在货物装车后,需要开着电动车先到0号用户家。送完货后从0号出发,再送到1号用户。然后快递员可以从1号直接到2号用户家,完成送货。但有时候由于路不通的原因,需要先折返回0号,再去2号,如此循环,完成送货。                  由于路况复杂,每个用户家只有一条路通往附近的其他一户邻居家,假设每条通路都是1公里。另外快递员的电动车的电是有限的,最多只能开有限的k公里。现在快递员已经在0号用户家送完快递,问快递员最多可以送多少个不重复的用户 区块链毕设学生68604898号
#include<bits/stdc++.h> #include<stack> #include<vector> #include<unordered_set>  using std::endl; typedef std::vector< std::vector<int> > ErweiMatrix; typedef std::unordered_set<int> Hashset;  int FanHuiXiaoBiao(std::vector<int> ShuZu, int Zhi) {     int XiaoBiao = -1;     for (int counter_1 = 0;counter_1 < ShuZu.size();counter_1++) {         if (ShuZu[counter_1] == Zhi) {             XiaoBiao = counter_1;             break;          }      }     return XiaoBiao;  }  bool ISLianJie(int Node_1, int Node_2, ErweiMatrix NodeArray) {     for (int nextNodes : NodeArray[Node_1]) {         if (nextNodes == Node_2) {             return true;             break;         }      }      return false;  }   int GetMaxIndex_XianZhi(std::vector<int> ShuZu, int XianZhi) {      int GetMaxValue = 0;     for (int counter_1 = 0;counter_1 < ShuZu.size();counter_1++) {         if ((ShuZu[counter_1] > 0) && ((XianZhi - 2 * ShuZu[counter_1]) >= 0)) {              GetMaxValue = ShuZu[counter_1] > GetMaxValue ? ShuZu[counter_1] : GetMaxValue;            }        }     return FanHuiXiaoBiao(ShuZu, GetMaxValue);   }  int main() {          std::ios_base::sync_with_stdio(false);     std::cin.tie(0);     std::cout.tie(0);      int DianShu = 0;     int MP = 0;      std::cin >> DianShu >> MP;     std::vector<int> input(DianShu - 1);     for (int counter_1 = 0;counter_1 < DianShu - 1;counter_1++) {         std::cin >> input[counter_1];      }     ErweiMatrix NodeArray(DianShu);     for (int counter_1 = 0;counter_1 < DianShu - 1;counter_1++) {         NodeArray[input[counter_1]].push_back(counter_1 + 1);         NodeArray[counter_1 + 1].push_back(input[counter_1]);      }     std::vector<int> DaYing(DianShu);     Hashset ChaChong;     std::stack<int> Mystack;     Mystack.push(0);      ChaChong.insert(0);     DaYing[0] = 0;     int DaYingIndex = 1;     std::vector<int> WhoLongest(DianShu, -1);     WhoLongest[0] = 0;      while (!Mystack.empty()) {         int Cur = Mystack.top();         if (NodeArray[Cur].size() == 1) WhoLongest[Cur] = Mystack.size();         Mystack.pop();         for (int NextNodes : NodeArray[Cur]) {             if (ChaChong.count(NextNodes) == 0) {                 Mystack.push(Cur);                 Mystack.push(NextNodes);                 DaYing[DaYingIndex] = NextNodes;                 DaYingIndex++;                 ChaChong.insert(NextNodes);                 break;               }            }       }      int GetLongest = 0;     for (int counter_1 = 0;counter_1 < DianShu;counter_1++) {         GetLongest = WhoLongest[counter_1] > GetLongest ? WhoLongest[counter_1] : GetLongest;      }     int GetLongestNode = FanHuiXiaoBiao(WhoLongest, GetLongest);//具体节点号     GetLongestNode = FanHuiXiaoBiao(DaYing, GetLongestNode);      std::stack<int> fuzhu_CurLuJin;     int ChuShiIndex = GetLongestNode;     fuzhu_CurLuJin.push(ChuShiIndex);     for (int counter_1 = ChuShiIndex - 1;counter_1 >= 0;counter_1--) {         int DangQianNode = fuzhu_CurLuJin.top();//是下标         if (ISLianJie(DaYing[DangQianNode], DaYing[counter_1], NodeArray)) {                          fuzhu_CurLuJin.push(counter_1);          }       }     std::vector<int> DpValue(DianShu, -1);          while (!fuzhu_CurLuJin.empty()) {                  DpValue[fuzhu_CurLuJin.top()] = 0;         fuzhu_CurLuJin.pop();       }          for (int counter_1 = 0;counter_1 < DianShu;counter_1++) {         if (DpValue[counter_1] != 0) {             for (int counter_2 = counter_1 - 1;counter_2 >= 0;counter_2--) {                                  if (ISLianJie(DaYing[counter_2], DaYing[counter_1], NodeArray)) {                     DpValue[counter_1] = DpValue[counter_2] + 1;                     break;                 }               }           }       }     int TongJi = 0;     for (int counter_1 = 0;counter_1 < DianShu;counter_1++) {         if (DpValue[counter_1] == 0) TongJi++;      }          MP -= (TongJi - 1);          if (MP <= 1 && MP >= 0) {         std::cout << TongJi;         return 0;     }              if (MP < 0) {         std::cout << MP + TongJi;         return 0;       }              std::stack<int> HelpMeChange;     while (MP > 1) {          int Cur_Change = GetMaxIndex_XianZhi(DpValue, MP);          if (Cur_Change == 0) break;         if (DpValue[Cur_Change] == 0) break;         MP -= DpValue[Cur_Change] * 2;          DpValue[Cur_Change] = 0;         HelpMeChange.push(DaYing[Cur_Change]);         for (int counter_1 = Cur_Change - 1;counter_1 >= 0;counter_1--) {             if (DpValue[counter_1] != 0 && ISLianJie(DaYing[counter_1], HelpMeChange.top(), NodeArray)) {                 DpValue[counter_1] = 0;                 HelpMeChange.pop();                 HelpMeChange.push(DaYing[counter_1]);              }          }         HelpMeChange.pop();                  for (int counter_1 = 0;counter_1 < DianShu;counter_1++) {         if (DpValue[counter_1] != 0) {             for (int counter_2 = counter_1 - 1;counter_2 >= 0;counter_2--) {                                  if (ISLianJie(DaYing[counter_2], DaYing[counter_1], NodeArray)) {                     DpValue[counter_1] = DpValue[counter_2] + 1;                     break;                 }               }           }         }       }     int counterZeros = 0;     for (int counter_1 = 0;counter_1 < DianShu;counter_1++) {         if (DpValue[counter_1] == 0) counterZeros++;      }     std::cout << counterZeros;        return 0; }

今天 09:59:26 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 严选的快递员每天需要送很多个包裹,在货物装车后,需要开着电动车先到0号用户家。送完货后从0号出发,再送到1号用户。然后快递员可以从1号直接到2号用户家,完成送货。但有时候由于路不通的原因,需要先折返回0号,再去2号,如此循环,完成送货。 由于路况复杂,每个用户家只有一条路通往附近的其他一户邻居家,假设每条通路都是1公里。另外快递员的电动车的电是有限的,最多只能开有限的k公里。现在快递员已经在0号用户家送完快递,问快递员最多可以送多少个不重复的用户-笔试面试资料

提供最优质的资源集合

立即查看 了解详情