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

0
0
已解决
李泽屿
李泽屿
新手启示者
新手启示者

题目链接: 酷町堂:5516

#include<iostream>
using namespace std;
/*
给定n个正整数
要保证3个数之和不超过一个给定的值w;
问能够找出来的3个数的乘积最大是多少?

三重循环,遍历每组数
当这三个数之和不超过一个给定的值w
就取这三个数的乘积的最大值 

【样例】
5个数 15
编号(自编) 
1           3
2           9
3           7
4           5
5           3

三重循环,遍历每组数
3 9 7   1 2 3
3 9 5   1 2 4
3 9 3   1 2 5
3 7 9   1 3 2
3 7 5   1 3 4
3 7 3   1 3 5
3 5 9   1 4 2
3 5 7   1 4 3
3 5 3   1 4 5
3 3 9   1 5 2
3 3 7   1 5 3
3 3 5   1 5 4
9 3 7   2 1 3
...     ...
...

遍历1-n
    遍历1-n
        遍历1-n
            当这三个数的和不大于w 并且 这三个数的乘积大于最大值
                最大值= 这三个数的乘积
                布尔类型的flag掷为true
当 flag不是false
    输出maxa
否则
    输出-1 

*/
int n,w,a[105];
long long maxa=0;
bool flag;
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++)
    } 
    return 0;
}

emmmm...

不会


0
已采纳
万睿言
万睿言
初级光能
初级光能
接着你的写:
循环遍历j+1到n
    如果a[i]+a[j]+a[k]小于等于w并且a[i]×a[j]×a[k]大于maxn
        maxn=a[i]×a[j]×a[k];
        flag置为true(flag初始值为false)

 

0
李泽屿
李泽屿
新手启示者
新手启示者

这测试点,我真的服了

0
李伟宸
李伟宸
高级守护
高级守护

老师举报!李泽屿问作业

我要回答