//给定一个正整数数组 arr,其中所有数字都不相同。找出其中最小的正整数,
//使得它无法由 arr 中的元素相加得到。例如,给定数组[1, 2, 5],最小不可组成和为 4。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int minUnformedSum(vector<int>& arr) {
sort(arr.begin(), arr.end());
int min_sum = 1; // 初始最小和为 1
for (int num : arr) {
if (num > 0 &&num <= min_sum) {
min_sum += num; // 更新当前最小和
}
else {
break; // num 已经大于 min_sum + 1,跳出循环
}
}
return min_sum;
}
int main() {
vector<int> arr = { -1, 0, 3, 5 };
cout << "最小不可组成和为: " << minUnformedSum(arr) << endl; // 应该输出 1
return 0;
}
该篇文章介绍了如何使用C++编程解决一个题目,即在给定不重复正整数数组中找到最小的无法由数组元素相加得到的数。通过先对数组排序,然后遍历计算最小和,找到满足条件的最小值。
5万+

被折叠的 条评论
为什么被折叠?



