UVa
来源:互联网 发布:加拿大地缘政治知乎 编辑:程序博客网 时间:2024/06/05 20:53
题意
求连续乘积最大值
思路
连续子序列有两个要素:起点和终点,因此只需枚举起点和终点即可。由于每个元素的绝对值不超过10且不超过18个元素,最大可能的乘积不会超过
1018 ,可以用long long存储对负数的特殊处理 :
如果遇到乘完某负数后结果变为负数,则应该搜索该遍历区间后面的数还有几个负数,如果没有剩余的负数了( mm == 0 ),之后的乘积一定是负数,也就没有必要继续往后遍历的必要了
AC代码
#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#define maxn 1000 + 10int s[maxn];int main(){ int n, num = 0; while( ~scanf("%d",&n) ) { for( int i = 0 ; i < n ; i++ ) scanf("%d",&s[i]); long long a, cheng = s[0]; for( int i = 0 ; i < n ; i++ ) { int dx = 1; a = s[i]; cheng = a > cheng ? a : cheng; int mm = 0; //记录尚未遍历的数中还有多少负数 for( int j = i+1 ; j < j + dx && j < n ; j++ ) { a *= s[j]; if( a < 0 && s[j] < 0 ) { for( int k = j ; k < j + dx && k < n; k++ ) mm++; if( mm == 0 ){ cheng = a/s[j]; break; } } cheng = a > cheng ? a : cheng; dx++; } } cheng = cheng < 0 ? 0 : cheng; printf("Case #%d: The maximum product is %lld.\n\n",++num, cheng); } return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- [CQOI2007]余数求和
- FilenameFilter总结
- IO操作-ObjectInputStream演示
- java详解 --- 泛型
- 记录应用错误
- UVa
- 第15周项目1
- ubuntu第二、三天(时光穿梭机)--学习资源来自廖雪峰博客
- 吴恩达 神经网络和深度学习 第一部分课程 第三章课后习题 Shallow Neural Networks Quiz, 10 questions
- Error creating bean with name 'dataSource' defined in class path resource
- HTML 敏感字
- 使用VLOOKUP与HYPERLINK函数
- Perl中here文档(=<<符号)的使用简介
- 禁止滑动的viewpager