返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >带你粗略了解c++的最大乘积
  • 115
分享到

带你粗略了解c++的最大乘积

2024-04-02 19:04:59 115人浏览 独家记忆
摘要

目录今天给大家讲最大乘积这道题目样例思路代码总结今天给大家讲最大乘积这道题目 最大乘积 内存限制:256 MiB 时间限制:1000 ms 输入文件:maximum.in 输

今天给大家讲最大乘积这道题目

最大乘积

内存限制:256 MiB

时间限制:1000 ms

输入文件:maximum.in

输出文件:maximum.out

题目类型:传统

评测方式:文本比较  

题目描述

给你 n n n个整数 a 1 , a 2 , a 3 , a 4... a n a1,a2,a3,a4...an a1,a2,a3,a4...an 从中任意挑选出个数字,使得乘积最大,输出乘积最大值。

输入格式

输入有多组测试数据。

第一行为整数 t t t,表示测试数据组数。

每组测试数据第一行为整数 n n n,表示数字的数量。

每组测试数据第二行有 n n n个整数 a 1 , a 2 , . . . . a n a1,a2,....an a1,a2,....an

输出格式

每组测试数据输出只有个整数,表示挑选出个数字的乘积最大值。

样例

样例输入

4

5

-1 -2 -3 -4 -5

6

-1 -2 -3 1 2 -1

6

-1 0 0 0 -1 -1

6

-9 -7 -5 -3 -2 1

样例输出

-120

12

0

945

思路

这个题目其实不难。我们先分析一下这个题目。

这个题目要我们从一组数据中 选取五个数 使得这五个数乘积最大。

简单一想 这个不很简单 我们直接从中选取五个最大的数字 然后将这五个数的成乘积直接输出不就完了吗。 但是 仔细一想又发现 不对。刚刚只局限于正数的情况 可是这里还有负数呢! 所以 我们要对这选出来的五个数分情况讨论。

我们要让乘积最大 那么选出来的五个数的乘积 都尽量应该是正数 所以 我们如果要选择负数 那么也最好让它成双成对的出现 因为负负得正 并且这个负数越小乘积就越大。根据此推断 我们将这五个数分为以下几种情况。

一:0个负数 5个正数。即选出这个数列里最大的五个数。

二:2个负数 3个正数。即选出这个数列里最大的三个数和最小的两个数。

三:4个负数 1个正数。即选出这个数列里最大的一个数和最小的四个数。

然后我们将这三种情况算出来的乘积取一个最大值即可。

但是这样就完了吗? 不你想多了。因为如果这 n n n个数全是负数怎么办?

很简单 我们为了让乘积最大 我们将会选取最大的五个负数。但当我们再回头看一下 发现这不就是第一种情况吗?

所以 我们就不需要特判这种情况了。

代码


#include<bits/stdc++.h>
using namespace std;
long long a[100005];
int n;
int t;
int main()
{
	freopen("maximum.in","r",stdin);
	freopen("maximum.out","w",stdout);
	//文件名输入输出 
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=1;i<=n;++i)
		cin>>a[i];
		//输入 
		sort(a+1,a+n+1);// 给这个数组排序 
		cout<<max(a[n]*a[n-1]*a[n-2]*a[n-3]*a[n-4],max(a[n]*a[n-1]*a[n-2]*a[1]*a[2],a[n]*a[1]*a[2]*a[3]*a[4]))<<endl;//按照思路中所讲的三种情况进行取最大值 并记得换行 
	}
	return 0;//返回 0 
}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 带你粗略了解c++的最大乘积

本文链接: https://lsjlt.com/news/133193.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 带你粗略了解c++的最大乘积
    目录今天给大家讲最大乘积这道题目样例思路代码总结今天给大家讲最大乘积这道题目 最大乘积 内存限制:256 MiB 时间限制:1000 ms 输入文件:maximum.in 输...
    99+
    2024-04-02
  • 带你粗略了解C++回文链表
    目录请判断一个链表是否为回文链表。思路总结请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2...
    99+
    2024-04-02
  • 带你粗略了解C++中的深浅拷贝
    目录一. 背景二. 代码实现三. 问题四. 解决方法总结一. 背景 首先看这样一个问题,在Car类中聚合了Engine类 二. 代码实现 下面给出类Car与类Engine的定义 C...
    99+
    2024-04-02
  • 带你粗略了解C++流的读写文件
    目录读写文本文件二进制读写文件按指定格式读写文件总结读写文本文件 C++的IO流: IO:向设备输入数据和输出数据 设备有: 1)文件 2)控制台 3)特定的数据类型(strin...
    99+
    2024-04-02
  • 带你粗略了解Java数组的使用
    目录数组的定义注意:数组的创建及初始化:1.数组的创建:2.数组的初始化①动态初始化:②静态初始化:注意事项: 数组的使用1.数组的长度:2.数组的访问:3.数组的遍历:4.使用数组...
    99+
    2024-04-02
  • 手把手带你粗略了解Java--类和对象
    目录认识类和对象1.类、对象是什么?2.什么是面向对象?3.一个对象的产生过程是?🔺OOP语言的三大特征?类和对象的实例化类的定义:注意:实例化对象:①如何访问对象中...
    99+
    2024-04-02
  • 手把手带你了解C++最小栈
    目录设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。示例: 输入: 输出: 解释: 思路总结设计一个支持 push ,pop ,top 操作,并...
    99+
    2024-04-02
  • 带你了解C++的IO流
    目录一、C语言的输入与输出二、C++中流的概念三、C++IO流1.C++标准IO流2. C++文件IO流 四、stringstream总结一、C语言的输入与输出 C语言中我...
    99+
    2024-04-02
  • 带你了解C++中的sort函数
    目录sort( ) char型数组char型数组总结sort( ) 使用方法: sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填)) 必须加上头文件...
    99+
    2024-04-02
  • 带你了解C++中vector的用法
    目录一,什么是vector二,容器特性1,顺序序列2,动态数组3,能够感知内存分配器三,常用基本函数实现四,基本用法1,头文件2,创建和使用3,算法五,vector占用内存空间问题1...
    99+
    2024-04-02
  • 带你一文了解C#中的Expression
    目录前言Expression与Expression Tree参考源码总结前言 我们书接上文,我们在了解LINQ下面有说到在本地查询IEnumerbale主要是用委托来作为传参,而解析...
    99+
    2024-04-02
  • 带你一文了解C#中的LINQ
    目录前言LINQ的根基IEnumerable和IEnumeratorLINQ的基本用法扩展方法在LINQ的应用:LINQ的流式语法LINQ的查询表达式:LINQ的查询语法LINQ的延...
    99+
    2024-04-02
  • 带你了解C++的数组与函数
    目录数组作为函数的参数数组参数的传递机制数组作为函数的参数 传递首地址。 A进行修改,a同时也会进行修改。 数组参数的传递机制 ...
    99+
    2024-04-02
  • 带你了解C++的动态内存分配
    目录new与delete运算符动态分配数组动态分配字符串总结new与delete运算符 数组在定义时就规定了其长度,这使得它的内存空间也固定了下来,这称为静态内存分配。 内存申请大了...
    99+
    2024-04-02
  • 一文带你了解C++中deque的使用
    目录1)deque的定义及基本用法2)deque的迭代器3)deque的性能4)deque的应用:滑动窗口问题1)deque的定义及基本用法 要使用deque,我们需要包含头文件,定...
    99+
    2023-05-18
    C++ deque使用 C++ deque原理 C++ deque
  • 一文带你了解C++中queue的使用
    目录一、queue的定义二、queue的使用三、queue的原理四、queue的示例一、queue的定义 queue是一个类模板。它包含在头文件中。其定义形式如下: template...
    99+
    2023-05-18
    C++ queue使用 C++ queue原理 C++ queue
  • 带你了解C语言的数据的存储
    目录C语言当中使用的数据类型使用的类型整型类浮点类型内存当中的存储原码、反码、补码大小端什么是大小端浮点数的存储浮点数的存储浮点数的存储规则指数 E 从内存当中取出总结C语言当中使用...
    99+
    2024-04-02
  • 一篇文章带你了解C/C++的回调函数
    目录函数指针概念先来看一个Hello World程序然后,采用函数调用的形式来实现用函数指针的方式来实现函数指针数组回调函数概念标准Hello World程序将它修改成函数回调样式修...
    99+
    2024-04-02
  • 一篇文章带你了解C++的KMP算法
    目录KMP算法步骤1:先计算子串中的前后缀数组NextC++代码:步骤2:查找子串在母串中出现的位置。总结KMP算法 KMP算法作用:字符串匹配 例如母串S = “aaagoogle...
    99+
    2024-04-02
  • 一篇文章带你了解C++中的异常
    目录异常抛出异常基本操作自定义的异常类栈解旋异常接口声明异常变量的生命周期异常的多态c++的标准异常库编写自己的异常类总结异常 在c语言中,对错误的处理总是两种方法: 1,使用整型的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作