题目:
Description
给定n个正整数a1…an,请从中选择3个数字,满足他们的和不大于给定的整数m,请求出这个和最大可能是多少。
Format
Input
第一行有两个整数,分别表示数字个数n和给定的整数m。 第二行有n个整数,表示给定的n个数字ai。 N小于等于1000
Output
输出一行一个整数表示答案。
Samples
输入数据 1
5 21
5 6 7 8 9
Copy
输出数据 1
21
Copy
Limitation
1s, 1024KiB for each test case.
这道题,告诉我们要取几个数,所以,循环嵌套搞定。
代码实现:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x, a[9999], maxn = 0;
cin >> n >> x;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);//sort:快排函数(升序)
for (int i = 1; i <= n; i++) { //枚举
for (int j = i + 1; j <= n; j++) {
for (int k = j + 1; k <= n; k++) {
if (a[i] + a[j] + a[k] <= x) {
maxn = max(maxn, a[i] + a[j] + a[k]);
}
if (a[i] + a[j] + a[k] == x) {
cout << x;
return 0;
}
}
}
}
cout << maxn;
return 0;
}
那么这道题就解决了,请大家三连支持一下!!