本题要求根据输入的身高数据,对每个报名的青年进行考核判断:如果身高大于或等于 170 厘米,输出 Qualified;否则输出 Keep trying。题目已经给出了明确的范围,数据量较小,主要考察基础的输入输出和条件判断。
整体流程非常简单,可以分为以下几步:
n,表示报名总人数。n 次,每次读入一个身高值 h。h,判断是否满足 h >= 170:
QualifiedKeep trying由于每个人的判断是独立的,可以直接在循环中边读入边输出,不需要存储所有数据。
算法本质就是 循环 + 条件分支。
for 或 while 循环控制执行次数。if-else 语句判断身高是否合格。endl 或 "\n"。程序需要对 n 个人依次进行判断,每个人的处理时间为常数 O(1),因此总时间复杂度为 O(n)。题目中 n 最大为 1000,可以在极短时间内运行完成,完全满足题目要求。
空间复杂度为 O(1),只使用了几个简单变量,没有开大的数组。
cpp1#include <iostream> 2using namespace std; 3 4int main() { 5 int n; 6 cin >> n; // 读入人数 7 8 for (int i = 0; i < n; i++) { // 循环 n 次 9 int h; 10 cin >> h; // 读入当前身高 11 if (h >= 170) { 12 cout << "Qualified" << endl; // 合格 13 } else { 14 cout << "Keep trying" << endl; // 不合格 15 } 16 } 17 18 return 0; 19}
cin >> n;:从标准输入读取报名总人数。for (int i = 0; i < n; i++):构建一个重复执行 n 次的循环,i 从 0 到 n-1。cin >> h;:每次循环读取一个身高值。if (h >= 170):判断身高是否大于等于 170。
cout << "Qualified" << endl;。cout << "Keep trying" << endl;。endl 用于换行,保证每个结果单独占一行,满足输出格式要求。Qualified 和 Keep trying)。cin/cout 时效率足够,不需要使用 scanf/printf,但若追求速度也可以改用 C 风格的输入输出。