当前位置:   article > 正文

华为OD机试真题-找车位-2023年OD统一考试(B卷)

华为od机试真题

题目描述:

停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车。

为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。

输入描述:

1、一个用半角逗号分割的停车标识字符串,停车标识为0或1,0为空位,1为已停车。

2、停车位最多100个。

输出描述:

输出一个整数记录最大距离。

补充说明:

示例1

输入:

1,0,0,0,0,1,0,0,1,0,1

输出:

2

说明:

当车停在第3个位置上时,离其最近的的车距离为2(1到3)。
当车停在第4个位置上时,离其最近的的车距离为2(4到6)。
其他位置距离为1。
因此最大距离为2。

  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main() {
  5. int a;
  6. char c;
  7. vector<int> input;
  8. while(cin >> a >> c)// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
  9. {
  10. input.push_back(a);
  11. }
  12. input.push_back(a);
  13. a = 0;
  14. int res1 = 0;
  15. int i=0;
  16. int j=input.size()-1;
  17. while(input[i] == 0){
  18. res1++;
  19. ++i;
  20. }
  21. int res2 = 0;
  22. while(input[j] == 0){
  23. res2++;
  24. --j;
  25. }
  26. int res3 = 0;
  27. for(; i<=j ; ++i){
  28. if(input[i] == 1){
  29. if(a%2)
  30. res3 = max(res3, a/2 + 1);
  31. else
  32. res3 = max(res3, a/2);
  33. a = 0;
  34. continue;
  35. }
  36. else{
  37. a++;
  38. }
  39. }
  40. cout << max(res1, max(res2, res3));
  41. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/545878
推荐阅读
相关标签
  

闽ICP备14008679号