问题标题: 酷町堂:5516 乘积最大 淦WA20分

0
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
已采纳
朱优扬
朱优扬
中级天翼
中级天翼

你的枚举过程没问题,但是你变量定义的有问题,把n, w, maxa=-1,a[110]改成long long类型

0
崔乔昕
崔乔昕
中级光能
中级光能

1、这里题目要求如果没有符合条件的数则输出-1,需要定义一个bool类型的flag,初值设为0,这里你没有输出哦而且没有定义。

2、枚举是没有问题的,你定义的变量是要把它定义成long long类型的哦。

3、还有那个数组定义最好定义成a[105],定义数组一般都是在数据范围加上5的哦。

0
我要回答