题解
2026-08-24 22:40:57
发布于:广东
15阅读
0回复
0点赞
看注释写得很详细(实际上是用ai写的自己写的)。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll; // 定义 long long 的别名为 ll,方便后续使用
ll n, a[2010]{}, ma = 0; // n: 数组元素个数; a: 存储输入的数组; ma: 记录数组中的最大值(注:原代码中计算了ma但未使用)
int main() {
// 输入数组大小 n
cin >> n;
// 循环读入 n 个数,并顺便求出最大值
for(ll i = 1; i <= n; i++) {
cin >> a[i];
ma = max(ma, a[i]); // 更新最大值
}
ll i = 0; // 从 0 开始寻找第一个未在数组中出现的非负整数
// 无限循环,配合内部的 break 退出
while(1) {
bool p = false; // 标记变量,用于判断当前数字 i 是否在数组中存在,初始为不存在
ll s; // 声明了一个变量 s (注:原代码中声明了s但未使用)
// 遍历数组,检查当前数字 i 是否存在于数组 a 中
for(ll j = 1; j <= n; j++) {
if(i == a[j]) { // 如果找到了相等的元素
p = true; // 将标记设为 true,表示数字 i 已存在
}
}
// 如果遍历完整个数组后,p 依然为 false,说明数字 i 不在数组中
if(!p) {
cout << i; // 输出这个缺失的最小非负整数
break; // 找到答案,跳出 while 循环,结束程序
}
// 如果数字 i 存在于数组中,则将 i 加 1,继续检查下一个数字
i++;
}
return 0;
}
这里空空如也







有帮助,赞一个