最大乘积

总时间限制:
1000ms
内存限制:
65536kB
描述
给定一个整数数组,我们希望去掉其中一个数,使得剩下所有数的乘积最大,问应该去掉哪一个数
输入
第一行M,表示有M组数据
接下来2*M行,每两行表示一组测试数据,每组的第一行市一个整数N,表示是数组的长度,接下来一行有N个整数,表示数组的内容,3<=N<=100,且数组内每个数都在[-10000000,10000000]区间内.
输出
M行,每行一个整数,表示应该去掉的那个数,如果有多个选择,则输出最先输入的那个.
样例输入
4
3
0 1 2
5
2 3 5 4 8
5
-1 -2 -3 -4 -5
4
-1 -2 -3 -4
样例输出
0
2
-1
-4

问题链接:Bailian4021 最大乘积

问题分析:需要看负数的个数,自然数的个数,然后根据个数去除一个最小值或绝对值最小值。

程序说明

  旧版本程序出现WA,经过网友指正,已经AC。问题出在有0的情况下,需要特殊处理,没有考虑周全。

题记:(略)

AC的C语言程序如下:

/* Bailian4021 最大乘积 */#include <stdio.h>
#include <limits.h>int main(void)
{int m, n, a, i;int ncount, maxn, minn, pcount, minp, zcount, first, second;scanf("%d", &m);while(m--) {scanf("%d", &n);ncount = 0;                 /* 负数个数 */maxn = INT_MIN;       /* 负数最大值 */minn = 0;                   /* 负数最小值 */pcount = 0;                 /* 自然数个数 */minp = INT_MAX;       /* 自然数最小值(包括0) */zcount = 0;                 /* 零的个数 */for(i=1; i<=n; i++) {scanf("%d", &a);if(i == 1)first = a;else if(i == 2)second = a;if(a < 0) {ncount++;if(a > maxn)maxn = a;else if(a < minn)minn = a;} else {if(a == 0)zcount++;pcount++;if(a < minp)minp = a;}}if(zcount >= 2)printf("%d\n", first);else if(zcount == 1 && ncount % 2 == 1)printf("%d\n", first == 0 ? second : first);else if(ncount == 0)printf("%d\n", minp);else if(pcount == 0)printf("%d\n", (ncount % 2 == 1) ? maxn : minn);else if(ncount % 2 == 1)printf("%d\n", maxn);elseprintf("%d\n", minp);}return 0;
}

WA的C语言程序如下:

/* Bailian4021 最大乘积 */#include <stdio.h>
#include <limits.h>int main(void)
{int m, n, a, i;int ncount, maxn, minn, pcount, minp;scanf("%d", &m);while(m--) {scanf("%d", &n);ncount = 0;                 /* 负数个数 */maxn = INT_MIN;       /* 负数最大值 */minn = 0;                   /* 负数最小值 */pcount = 0;                 /* 自然数个数 */minp = INT_MAX;       /* 自然数最小值(包括0) */for(i=1; i<=n; i++) {scanf("%d", &a);if(a < 0) {ncount++;if(a > maxn)maxn = a;else if(a < minn)minn = a;} else {pcount++;if(a < minp)minp = a;}}if(ncount == 0)printf("%d\n", minp);else if(pcount == 0)printf("%d\n", (ncount % 2 == 1) ? maxn : minn);else if(ncount % 2 == 1)printf("%d\n", maxn);elseprintf("%d\n", minp);}return 0;
}

Bailian4021 最大乘积【序列处理】相关推荐

  1. 程序设计入门经典题解(百练篇)

    参考链接:PKU百练题解(Bailian) Bailian1017 装箱问题[贪心] - 海岛Blog - CSDN博客 POJ1088 Bailian1088 滑雪[DFS+记忆化搜索]_海岛Blo ...

  2. 处女座的测验(一)(互质数)

    链接:https://ac.nowcoder.com/acm/contest/327/H 来源:牛客网 题目描述 : /* 做这题首先要明确怎么样的一对互质数会满足题目要求: (素数序列中任意一对都互 ...

  3. 度量空间(metric space)

    参考文章:(GTM135)Advanced Linear Algebra 度量空间 定义 度量空间(metric space)是二元组(M,d)(M,d)(M,d),其中MMM是非空集合,度量(met ...

  4. 士成兄的面试经历(放弃5家offer终去了华为)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Gane_Cheng/article/d ...

  5. 连续因子pta c语言,PTA --- L1-006 连续因子

    一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的 ...

  6. 卷积和互相关操作的关系

    本文首发于 算法社区 dspstack.com,转载请注明出处,谢谢. 前言# 卷积和互相关操作在数字信号处理中都是非常重要的公式,卷积是迟缓线性时不变系统的输出响应,而相关操作则在系统识别方面非常有 ...

  7. 腾讯、百度、珍爱网、中国电信、三之乐面试经历

    2016年9月中下旬面试了5家公司.留下一点经验给后来人. 转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/54142709 http ...

  8. HDU2006 求奇数的乘积【入门+序列处理】

    求奇数的乘积 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  9. leetcode-152 乘积最大子序列

    题目描述: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6 ...

最新文章

  1. 2019-4:自考总结
  2. LeetCode 142. Linked List Cycle II--单向链表成环的起点--C++,Python解法
  3. 报错解决:alueError: When using data tensors as input to a model, you should specify the `steps_per_epoch
  4. [JAVA][Liferay] Configure sharding in multiple sites
  5. Intellij IDEA 创建Web项目并在Tomcat中部署运行
  6. Jquery 获取select,radio 和 checkbox的值
  7. java--模板方法模式
  8. cad里面f命令用不了_CAD出现命令无效、失灵等问题?不用慌,两招帮你快速解决...
  9. PinSAGE有伴了! 快速了解PinnerSAGE模型
  10. Quick Sort(三向切分的快速排序)(Java)
  11. LAMP环境搭建教程
  12. ios mk上传文件到服务器,ios – 使用预签名URL将文件上传到AWS S3的代码有什么问题?...
  13. 分布式服务框架 HSF
  14. 光电隔离RS485典型电路
  15. 读书百客:《渔家傲·天接云涛连晓雾》评赏
  16. InsecureProgramming-master——abo1
  17. 如何看hbo_如何取消HBO Max订阅
  18. wordpress 服务器_如何将WordPress从本地服务器移动到实时站点(2种方法)
  19. 用最新技术优化深度学习BTC交易机器人
  20. 录制iPhone屏幕

热门文章

  1. Web请求响应编码问题详解
  2. svg如何平铺 html5,如何在HTML5中使用SVG
  3. 前端路由跳转丢失端口号_Laravel框架-路由的基本概念及实例分析
  4. ✨Shell脚本实现Base64 加密解密
  5. Hive DDL DML
  6. c语言定义int 输出4386,C语言 · 矩阵乘法
  7. MATLAB里sortrows是什么意思,Matlab中sortrows函数解析
  8. java 向量点乘_向量的点乘与叉乘学习笔记
  9. valuable的用法_词汇精选:valuable的用法和辨析
  10. TensorFlow精进之路(十):循环神经网络RNN