博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA11059 Maximum Product
阅读量:6689 次
发布时间:2019-06-25

本文共 1165 字,大约阅读时间需要 3 分钟。

问题链接:。基础级练习题,用C语言编写程序。

题意简述:输入n个整数序列,有正有负,求这个序列中最大连续累乘的子序列,其最大的值为多少。如果结果为负数,则输出0。

问题分析:如果整数序列中有0,则用0分段然后分别计算。对于每个分段(可能只有一个分段),其中没有0,如果其中有偶数个负数,则将分段中所有的数相乘就是所求结果。如果分段中有奇数个负数,那么最大的累乘出现在第1个负数的右边开始的子序列或从开始到最后1个负数左边的子序列。

程序说明:(略)

AC的C语言程序如下:

/* UVA11059 Maximum Product */#include 
int main(void){ int n, val, caseno=0, flag; long long ans, max, afternegativemax; while(scanf("%d", &n) != EOF) { ans = 0; max = 1; afternegativemax = 1; flag = 0; while(n--) { scanf("%d", &val); if(val == 0) { max = 1; afternegativemax = 1; flag = 0; } else { max *= val; if(max > ans) ans = max; if(flag) { afternegativemax *= val; if(afternegativemax > ans) ans = afternegativemax; } if(val < 0) flag = 1; } } printf("Case #%d: The maximum product is %lld.\n\n", ++caseno, ans); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7564489.html

你可能感兴趣的文章
[Head First设计模式]生活中学设计模式——状态模式
查看>>
linux每日命令(32):gzip命令
查看>>
线程中断
查看>>
Winform自定义窗体样式,实现标题栏可灵活自定义
查看>>
[SDOI2009]HH的项链 BZOJ1878
查看>>
MySQL存储引擎中的MyISAM和InnoDB区别详解
查看>>
类欧几里得算法
查看>>
Linux目录结构介绍
查看>>
关于Yii的一些认识和学习
查看>>
若一整系数$n$次多项式在有理数域可约,则总可以分解成次数小于$n$的两整系数多项式之积....
查看>>
docker tomcat 环境构建
查看>>
EF Core CodeFirst实践 ( 使用MS SqlServer)
查看>>
MGR 架构 ~ DBA相关运维管理
查看>>
vue中父子组件以及兄弟组件的传值情况?
查看>>
Oracle 使用RMAN COPY 移动 整个数据库 位置 示例
查看>>
Sencha toucha2中设置文本框默认提示文字的PlaceHolder属性的颜色
查看>>
PHP模拟POST提交数据三种方式
查看>>
共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
查看>>
页面添加友盟(CNZZ)统计和事件追踪
查看>>
新maven项目创建JSP出现小红叉报错 javax.servlet.http.HttpServlet not found
查看>>