连续最大积

时间限制: 1000ms
内存限制: 32768KB

HDU       ID: 4561
64位整型:      Java 类名:

上一题

提交  运行结果 统计  讨论版

下一题

题目描述

小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢!

比如我们有如下随机数组:
2 2 0 -2 0 2 2 -2 -2 0 
在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。

现在小明请你帮忙算出这个最大值。

输入

第一行输入一个正整数T,表示总共有T组数据(T <= 200)。
接下来的T组数据,每组数据第一行输入N,表示数组的元素总个数(1<= N <= 10000)。
再接下来输入N个由0,-2,2组成的元素,元素之间用空格分开。

输出

对于每组数据,先输出Case数。
如果最终的答案小于等于0,直接输出0
否则若答案是2^x ,输出x即可。
每组数据占一行,具体输出格式参见样例。

样例输入

2
2
-2 0
10
2 2 0 -2 0 2 2 -2 -2 0

样例输出

Case #1: 0
Case #2: 4

来源

2013金山西山居创意游戏程序挑战赛——复赛(2)
上一题

提交   运行结果 统计  讨论版

下一题


管理员 QQ 1532958223

思路:刚看到这题以为是dp,但怎么都想不对的,我用的方法,

开始提交时,过了,但是后来又提交 ,超时,同样的代码,不知

道是不是后台数据出问题了,上网查了一下,看到一个思想特别

好的代码,就借鉴一下(思想也特别简单)把我的代码也粘贴出

来,大神可以指点一下。

想了几组数据大家可以测试一下,对比一下结果,寻找一下代码

的误区。

3

2 -2 2

3

-2  2 2

6

2 -2 2 -2 2 -2

6

-2 2 -2 2 -2 2

大神的:

#include <stdio.h>
int main()
{int T,n,a[10010],i,j,k,sum,MAX,flag;scanf("%d",&T);k=1;while(T--){scanf("%d",&n);for (i=0; i<n; i++)scanf("%d",&a[i]);MAX=0;sum=0;for (i=0; i<n; i++){if (a[i]>0){if (sum<0){sum=sum-1;}elsesum=sum+1;}else if (a[i]<0){if (sum<0){sum=-sum+1;}elsesum=-sum-1;}elsesum=0;if (sum>MAX){MAX=sum;}}sum=0;for (i=n-1; i>=0; i--){if (a[i]>0){if (sum<0){sum=sum-1;}elsesum=sum+1;}else if (a[i]<0){if (sum<0){sum=-sum+1;}elsesum=-sum-1;}elsesum=0;if (sum>MAX){MAX=sum;}}printf("Case #%d: %d\n",k++,MAX);}return 0;
}


我的:
#include<stdio.h>
#include<string.h>
int a[10000+1];
int main()
{int t,n,h=0;scanf("%d",&t);while(t--){scanf("%d",&n);int m,term=0,k=0,max=0,s=0;for(int i=0; i<n; i++)scanf("%d",&a[i]);for(int i=0; i<n; i++){if(!a[i])continue;term=0; k=0;s=0;for(int j=i; j<n; j++){if(a[j]==0)break;else{if(a[j]==-2){k++;s=0;}else s++;term++;}if(k%2==0&&k&&term>max)max=term;if(term>max&&k==0)max=term;if(k%2&&s>max)max=s;}}printf("Case #%d: %d\n",++h,max);}return 0;
}

改进的:

#include<stdio.h>
#include<string.h>
int a[10000+1];
int main()
{int t,n,h=0;scanf("%d",&t);while(t--){scanf("%d",&n);int m,term=0,k=0,max=0,s=0;for(int i=0; i<n; i++)scanf("%d",&a[i]);for(int i=0; i<n; i++){if(a[i]==0){term=0;k=0;s=0;continue;}if(a[i]==-2){k++;s=0;}else s++;term++;if(k%2==0&&term>max)max=term;if(k%2&&s>max)max=s;}term=0; k=0; s=0;for(int i=n-1; i>=0; i--){if(a[i]==0){term=0;k=0;s=0;continue;}if(a[i]==-2){k++;s=0;}else s++;term++;if(k%2==0&&term>max)max=term;if(k%2&&s>max)max=s;}printf("Case #%d: %d\n",++h,max);}return 0;
}





												

连续最大积 hdu 4567相关推荐

  1. hdu4561 连续最大积

    题意: 连续最大积 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total ...

  2. 杭电4561 连续最大积

    连续最大积 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  3. hdu 4561 模拟小题or连续最大积

    Description 小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢! 比如我们有如下随机数组: ...

  4. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

  5. [转]常见的动态规划问题分析与求解

    动态规划(Dynamic Programming,简称DP),虽然抽象后进行求解的思路并不复杂,但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一,并不像回溯法具有解决绝 ...

  6. Leecode-动态规划专题训练

    动态规划问题基本解题步骤 设计状态 写出状态转移方程 设置初始状态 处理非法状态 执行状态转移 后处理 返回最终结果 显式转移方程 斐波那契数列 阶乘 隐式转移方程 爬楼梯 爬楼梯最小花费 注意:对于 ...

  7. 生命,宇宙以及一切事物的答案是...42?

    "那个伟大的问题,关于生命.宇宙以及一切的问题的答案是--" "42."深思用无限的威严和平静的语调说. 01 终极问题的终极答案 英国作家道格拉斯·亚当斯(D ...

  8. 2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答

    2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答 简介 赛题构成 代码提交说明 成绩评定 2020真题 1-1 数字与相邻的前.后数字之和可以被4整除 题目 个人对 ...

  9. 动态规划与贪心算法比较

    动态规划和贪心算法比较 动态规划: 动态规划一般分为线性动规.区域动规.树形动规.背包动规四类 动态规划程序设计师是对解最优化问题的一种途径.一种方法,而不是一种特殊的算法,并不是一个标准的数学表达式 ...

  10. hdu 5247 找连续数(思维)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5247 找连续数 Time Limit: 2000/1000 MS (Java/Others)    M ...

最新文章

  1. css定位页面元素,页面元素定位-CSS元素基本定位
  2. linux c语言文件属性,Linux C获取文件属性
  3. 网络推广专员浅析网络推广期间网站收录如何提升?
  4. python turtle循环图案-Python内置模块turtle绘图详解
  5. lame,把ios录音转换为mp3格式
  6. mysql master host_mysql异步备份的有关问题,MASTER_HOST可否指定多个
  7. python机器学习库xgboost——xgboost算法
  8. I/O多路复用之select,poll,epoll简介
  9. VS.net2005的稳定性真的很差劲
  10. 1.ECMAScript 6简介(阮一峰ES6)
  11. 整流四 -三相PWM整流器的工作原理分析
  12. 学校选课网筛选器的设想
  13. 部落优势服务器,魔兽怀旧服联盟优势服有哪些?怀旧服联盟优势服务器一览
  14. PointNetGPD: Detecting Grasp Configurations from Point Sets
  15. 关于图像打印的思考.
  16. es的基本操作(创建索引,添加数据,删除数据,判断索引是否存在)
  17. Win10 wsl-安装教程
  18. C语言的函数定义和函数声明
  19. CheckBox选中触发事件 和 取消选中触发事件
  20. BINARY和VARBINARY类型

热门文章

  1. 【51单片机】 利用定时器产生生日快乐歌
  2. 35岁不是程序员职场中的绊脚石
  3. mm游戏大全HTML5小游戏,HTML5小游戏——看你有多色(示例代码)
  4. 很好的东子(干货很多)--把一个函数变成全局的方法及slideToggle()
  5. 以太网没有有效IP配置问题
  6. Shiro反序列化漏洞检测及修复(工具分享)
  7. AGU13-Save The Princess
  8. windows系统引导配置命令
  9. 已解决-改变macOS和Windows双系统的默认启动顺序
  10. 龙之谷2服务器维护,龙之谷2更新后进不去游戏解决方法