杭电acm 4561(连续最大积的相关题目)
来源:互联网 发布:怎样投诉淘宝客服 编辑:程序博客网 时间:2024/04/25 19:15
先贴题目:
小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢!
比如我们有如下随机数组:
2 2 0 -2 0 2 2 -2 -2 0
在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。
现在小明请你帮忙算出这个最大值。
比如我们有如下随机数组:
2 2 0 -2 0 2 2 -2 -2 0
在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。
现在小明请你帮忙算出这个最大值。
Input
第一行输入一个正整数T,表示总共有T组数据(T <= 200)。
接下来的T组数据,每组数据第一行输入N,表示数组的元素总个数(1<= N <= 10000)。
再接下来输入N个由0,-2,2组成的元素,元素之间用空格分开。
接下来的T组数据,每组数据第一行输入N,表示数组的元素总个数(1<= N <= 10000)。
再接下来输入N个由0,-2,2组成的元素,元素之间用空格分开。
Output
对于每组数据,先输出Case数。
如果最终的答案小于等于0,直接输出0
否则若答案是2^x ,输出x即可。
每组数据占一行,具体输出格式参见样例。
如果最终的答案小于等于0,直接输出0
否则若答案是2^x ,输出x即可。
每组数据占一行,具体输出格式参见样例。
Sample Input
22-2 0102 2 0 -2 0 2 2 -2 -2 0
Sample Output
Case #1: 0Case #2: 4
题目意思很清楚,暴力解法肯定是不行的,那样会超时。如果仅仅只是连续最大积的题目,那么用两个函数记录最大最小值即可(动态规划的思想,同连续最大和)。不过对于这个题目,从数据两边分别遍历即可。
下面是代码:
#include <stdio.h> const int MAX = 10010;int a[10010];int main(){ int max(int, int); int T, n, ans, count_1, count_2; scanf("%d", &T); for(int i = 0; i < T; i++) { scanf("%d", &n); ans = 0; for(int j = 0; j < n; j++) { scanf("%d", &a[j]); } count_1 = 0; count_2 = 0; ans = 0; for(int t = 0; t < n; t++) { if(a[t] > 0) { count_1++; } else if(a[t] < 0) { count_1++; count_2++; } if(count_2 % 2 == 0) { ans = max(ans, count_1); } if(a[t] == 0) { count_1 = 0; count_2 = 0; } } count_1 = 0; count_2 = 0; for(int s = n - 1; s >= 0; s--) { if(a[s] > 0) { count_1++; } else if(a[s] < 0) { count_1++; count_2++; } if(count_2 % 2 == 0) { ans = max(ans, count_1); } if(a[s] == 0) { count_1 = 0; count_2 = 0; } } printf("Case #%d: %d\n", i + 1, ans); }}int max(int a, int b){ return a > b ? a : b;}
0 0
- 杭电acm 4561(连续最大积的相关题目)
- 杭电(hdu)ACM 1231 最大连续子序列
- 杭电4561 连续最大积
- HDU ACM 4561 连续最大积->DP
- 杭电(HDU)acm题目的分类
- 杭电acm有关string的题目
- 杭电acm 5969 最大的位或(数论)
- 杭电acm 题目分类(一)
- 杭电ACM 题目分类
- 杭电ACM题目分类
- 杭电ACM题目分类
- 杭电ACM题目分类
- 杭电acm题目分类
- 杭电ACM题目分类
- 杭电acm 题目分类
- 杭电ACM题目分类
- 杭电ACM题目分类
- 杭电ACM题目分类
- 修改eclipse对jsp文件sorce format长度
- java自行实现单线程定时器
- crazyflie2.0融合磁力计问题
- [BZOJ1014][JSOI2008]火星人prefix
- xcode7制作framework(包含加入xib,资源文件等)
- 杭电acm 4561(连续最大积的相关题目)
- hdoj--1408--盐水的故事(技巧)
- xml文件解析类及Android项目中常用到的两种获取xml文件方式
- Linux命令简介—pwd
- java classloader
- Oracle 中使用fetch bulk collect into 批量效率的读取游标数据
- 腾讯Bugly干货分享:Android应用性能评测调优
- hdu 4512 吉哥系列故事——完美队形I(LICS)
- svn 常用命令