编程之美_子数组的最大乘积
来源:互联网 发布:初中微机考试模拟软件 编辑:程序博客网 时间:2024/06/05 03:54
题目:
- 在一个数组中,以i为界限,分别计算i前面s[i-1]的积,后面t[i+1]的积
p[i]=s[i-1]*t[i+1]即为这个数组中除去i的所有数的乘积。
时间复杂度为,从头到尾和从尾到头遍历数组得到s[]和t[]的时间,加上p[]的时间3N,加上查找最大值的时间复杂度,最后总得时间复杂度为O(n)。
注意在代码编写的过程中,因为若干个数的乘积较大,需要把数组定义为longlong型
#include <iostream>#include <algorithm>using namespace std;#define MAXN 1000long long A[MAXN];long long s[MAXN];long long t[MAXN];long long p[MAXN];int main(){ int n, i; cin >> n; for (i=1; i<=n; i++) cin >> A[i]; // 从前往后用叠乘法 s[0] = 1; for (i=1; i<n; i++) s[i]=A[i]*s[i-1]; // 从后往前用叠乘法 t[n+1] = 1; for (i=n; i>1; i--) t[i]=A[i]*t[i+1]; // 计算出n-1个n-1数连乘 for (i=0; i<=n-1; i++) p[i] = s[i]*t[i+2]; long long maximum = p[0]; // 获取其中的最大值 for (i=1; i<=n-1; i++) maximum = max(maximum, p[i]); cout <<"max is "<< maximum << endl;}
阅读全文
0 0
- 编程之美_子数组的最大乘积
- 编程之美---子数组最大乘积
- 编程之美之"子数组的最大乘积"
- 子数组的最大乘积-编程之美
- 编程之美----子数组的最大乘积
- [编程之美]子数组的最大乘积
- 编程之美 子数组的最大乘积
- 编程之美:子数组的最大乘积
- 编程之美2.13 子数组的最大乘积
- 编程之美--子数组的最大乘积
- [编程之美] PSet2.13 子数组的最大乘积
- 编程之美2.13 子数组的最大乘积
- 编程之美 - 子数组的最大乘积
- 编程之美2.13 子数组的最大乘积
- 编程之美--子数组中的最大乘积
- 编程之美-2.13 子数组最大乘积
- 编程之美--求数组的子数组的最大乘积
- 读书笔记之编程之美 - 2.13 子数组的最大乘积
- [深度学习]深度学习中卷积操作和数学中卷积操作的异同
- 认识CSS
- STL标准库String类型
- Spark Scala 实现二次排序和相加
- 由JVM引发的思考_GC算法与种类
- 编程之美_子数组的最大乘积
- 常规Oracle语句与存储过程语句
- thinkphp框架内实现无限级分类的方法
- 单片机原理(1):基本结构
- CentOS 7下MySQL服务启动失败的解决思路
- ApacheBench网站压力测试步骤
- C#版浅谈三层
- 返回参数二进制中 1 的个数
- String类源码简析(上 源码行数1~1904)