博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【编程之美】2.13 子数组的最大乘积
阅读量:5337 次
发布时间:2019-06-15

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

题目:一个有N个数的整数数组 取其中N-1个元素的子数组 求子数组的最大乘积 不能用除法。

 

这道题自己没有写对,没有考虑到负数的情况,只是单纯的想去掉最小的数。 但是若有负数 -5 -4 -3 中-5 * -4 = 20更大。

需要先统计正数、负数和0的个数,再分类讨论。考察的其实就是细心和耐心。

//答案解法int getMaxProductAnswer(int * a, int alen){    int NumPositive = 0;    int NumNegtive = 0;    int NumZero = 0;    int exceptLoction = 0; //去掉的数字的位置    int maxProduct = 1;    for(int i = 0; i < alen; i++)    {        if(a[i] == 0)        {            NumZero++;        }        else if(a[i] > 0)        {            NumPositive++;        }        else        {            NumNegtive++;        }    }    if(NumZero >= 2)    {        maxProduct = 0;    }    else if(NumZero == 1)    {        if(NumNegtive & 0x01 == 1) //奇数个负数        {            return 0;        }        else //偶数个负数 去掉0        {            for(int i = 0; i < alen; i++)            {                if(a[i] != 0)                {                    maxProduct *= a[i];                }            }        }    }    else    {        if(NumNegtive & 0x01 == 1) //奇数个负数 去掉负数中绝对值最小的        {            int minAbsNegtive = 0;            int i = 0;            for(i = 0; i < alen; i++)            {                if(a[i] < 0)                {                    minAbsNegtive = a[i];                    exceptLoction = i;                    break;                }            }            for( ;i < alen; i++)            {                if(a[i] < 0 && a[i] > minAbsNegtive)                {                    minAbsNegtive = a[i];                    exceptLoction = i;                }            }            for(i = 0; i < alen; i++)            {                if(i != exceptLoction)                {                    maxProduct *= a[i];                }            }        }        else //偶数个负数        {            if(NumPositive > 0) //有正数 去掉正数中最小的            {                int minPositive = 0;                int i = 0;                for(i = 0; i < alen; i++)                {                    if(a[i] > 0)                    {                        minPositive = a[i];                        exceptLoction = i;                        break;                    }                }                for( ;i < alen; i++)                {                    if(a[i] > 0 && a[i] < minPositive)                    {                        minPositive = a[i];                        exceptLoction = i;                    }                }                for(i = 0; i < alen; i++)                {                    if(i != exceptLoction)                    {                        maxProduct *= a[i];                    }                }            }            else //没有正数 去掉负数绝对值最大的            {                int maxAbsNegtive = 0;                int i = 0;                for(i = 0; i < alen; i++)                {                    if(a[i] < 0)                    {                        maxAbsNegtive = a[i];                        exceptLoction = i;                        break;                    }                }                for( ;i < alen; i++)                {                    if(a[i] < 0 && a[i] < maxAbsNegtive)                    {                        maxAbsNegtive = a[i];                        exceptLoction = i;                    }                }                for(i = 0; i < alen; i++)                {                    if(i != exceptLoction)                    {                        maxProduct *= a[i];                    }                }            }        }    }    return maxProduct;}int main(){    int a[10] = {-2,-4,-6,0,-9,-2,-4,-6,-7,-4};    int maxProduct = getMaxProductAnswer(a, 10);    return 0;}

 

转载于:https://www.cnblogs.com/dplearning/p/4080247.html

你可能感兴趣的文章
shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
查看>>
hdu-3790最短路刷题
查看>>
微信小程序开发技巧总结 (一)-- 数据传递和存储
查看>>
Java基础编程题——分别统计出其中汉字、英文字母、空格、数字和其它字符的个数...
查看>>
物理机以及不同的虚拟机的转换方法
查看>>
express get和post方法
查看>>
关于日历实现代码里lunarInfo(农历)数组
查看>>
【转】winrar命令行详解
查看>>
#!/usr/bin/python3 和 #!/usr/bin/env python3的区别
查看>>
AWK中的OFS的问题
查看>>
带你彻彻底底弄懂Scroller
查看>>
前端开发 Web SQL Database
查看>>
待解谜题(持续更新)
查看>>
python操作数据库产生中文乱码问题【已解决】
查看>>
母版页中引用图片,外部js、css文件的路径问题 [转]
查看>>
微信小程序_(组件)组件基础
查看>>
原生Js_制作简易日历
查看>>
2015年10月14日学习笔记
查看>>
hdu 1026 Ignatius and the Princess I
查看>>
数据结构考研模糊知识点2.1
查看>>