0
已解决
王子健
初级天翼
初级天翼
5516 乘积最大 经验值:800
题目描述 Description
给定n个正整数,请你在这n个正整数中找出3个数,要保证3个数之和不超过一个给定的值w,则能够找出来的3个数的乘积最大是多少?如果没有符合条件的3个数,则输出-1。
输入描述 Input Description
输入有两行,
第一行输入两个个正整数n和w;
第二行输入n个正整数。
输出描述 Output Description
输出满足条件的3个数乘积的最大值。(没有符合条件的数则输出-1)
样例输入 Sample Input
5 15 3 9 7 5 3
样例输出 Sample Output
105
数据范围及提示 Data Size & Hint
n<=100,w<=200000。
输入的每个正整数不超过100000。
枚举思路,是不是枚举过程出了问题,WA20
#include <iostream>
#include <cstdio>
using namespace std;
int n, w, maxa = -1;
int a[110];
int main() {
cin >> n >> w;
for(int i=1; i<=n; i++) cin >> a[i];
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] <= w) {
if(a[i] * a[j] * a[k] > maxa)
maxa = a[i] * a[j] * a[k];
}
}
}
}
cout << maxa;
return 0;
}
1
0
崔乔昕
中级光能
中级光能
1、这里题目要求如果没有符合条件的数则输出-1,需要定义一个bool类型的flag,初值设为0,这里你没有输出哦而且没有定义。
2、枚举是没有问题的,你定义的变量是要把它定义成long long类型的哦。
3、还有那个数组定义最好定义成a[105],定义数组一般都是在数据范围加上5的哦。
0