当前位置:   article > 正文

每日一练c++题目日刊 | 第八期_蔬菜配送,求派送完成的最小时间

蔬菜配送,求派送完成的最小时间

第一题:夏洛克侦案

题目描述

福尔摩斯接到了一个任务,需要帮助一位富有的英国贵族解决一件谋杀案。谋杀发生在他的豪宅里,在他的书房里。现场有五个嫌疑人:

家庭保姆
英国贵族
律师
司机
清洁工
  • 1
  • 2
  • 3
  • 4
  • 5

福尔摩斯需要编写一个程序来帮助他推断出谋杀犯的身份。他的程序将收集一些证据,然后根据这些证据来推断出犯罪者的身份。

输入格式

输入将包含五行,每行代表一个嫌疑人的信息。

名字是一个字符串,长度不超过 100 个字符。

后面三个字段都是布尔值,表示是否满足对应的条件。

输出格式

输出应包含一行,表示根据输入的信息推断出的犯罪者的名字。

输入样例

家庭保姆 false true false
英国贵族 true false false
律师 false false true
司机 true true false
清洁工 true true true
  • 1
  • 2
  • 3
  • 4
  • 5

输出样例

清洁工
  • 1

解题思路&C++题解

解题思路:

首先读入五个嫌疑人的信息。
遍历五个嫌疑人,找出第一个满足现场、动机和机会三个条件的嫌疑人。
输出这个嫌疑人的名字。

算法设计

由于题目只要求我们找出第一个满足条件的嫌疑人,所以这道题的算法很简单。我们可以使用一个循环遍历五个嫌疑人,如果找到了第一个满足条件的嫌疑人就直接输出,否则遍历完所有的嫌疑人后输出一个空行。

时间复杂度:

由于题目只有五个嫌疑人,所以时间复杂度是 O ( 1 ) O(1) O(1) 的。

下面是 c++ 代码实现:

#include <iostream>
#include <string>

using namespace std;

struct Suspect {
  string name;
  bool is_at_scene;
  bool has_motive;
  bool has_opportunity;
};

// 读入嫌疑人的信息
Suspect read_suspect() {
  Suspect suspect;
  cin >> suspect.name >> suspect.is_at_scene >> suspect.has_motive >> suspect.has_opportunity;
  return suspect;
}

int main() {
  // 读入五个嫌疑人的信息
  Suspect suspects[5];
  for (int i = 0; i < 5; i++) {
    suspects[i] = read_suspect();
  }

  // 找出犯罪者
  string murderer;
  for (int i = 0; i < 5; i++) {
    if (suspects[i].is_at_scene && suspects[i].has_motive && suspects[i].has_opportunity) {
      murderer = suspects[i].name;
      break;
    }
  }

  // 输出犯罪者的名字
  cout << murderer << endl;

  return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/625116
推荐阅读
相关标签
  

闽ICP备14008679号