C++怎样算出一组整数中的大于某个确定数的最小和
时间: 2024-03-26 07:40:31 浏览: 20
假设我们有一个长度为n的整数数组a,我们要求大于某个确定数x的最小和,可以按照以下步骤进行:
1. 将数组a排序,从小到大排序。
2. 从头开始遍历数组a,记录当前已遍历到的数的和sum,以及大于等于x的数的个数cnt。
3. 当cnt等于1时,即找到了第一个大于等于x的数,此时的sum即为大于x的最小和。
4. 当cnt大于1时,将当前的sum减去最后一个大于等于x的数,再加上x,即可得到大于x的最小和。
以下是C++的代码实现:
```cpp
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
const int N = 100010;
int n, x;
int a[N];
int main()
{
cin >> n >> x;
for (int i = 0; i < n; i ++ ) cin >> a[i];
sort(a, a + n);
int sum = 0, cnt = 0;
for (int i = 0; i < n; i ++ )
{
if (a[i] >= x)
{
cnt ++ ;
if (cnt == 1) sum = a[i];
else sum -= a[i - 1], sum += x;
break;
}
sum += a[i];
}
if (cnt == 0) sum = -1;
cout << sum << endl;
return 0;
}
```
需要注意的是,如果数组中不存在大于等于x的数,则无法得到大于x的最小和,此时程序应该输出-1。