//给定一个正整数数组 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;
}