博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大乘积问题
阅读量:5327 次
发布时间:2019-06-14

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

/*给定一个序列 序列内部数字自由组合 求最大乘积*/#include 
#include
#include
#define T 30 //30为数组最大长度void quick_sort(int s[], int l, int r){ int i, j, x; if (l < r) { i = l; j = r; x = s[i]; while (i < j) { while (i < j && abs(s[j]) > abs(x)) j--; /* 从右向左找第一个绝对值小于x的数 */ if (i < j) s[i++] = s[j]; while (i < j && abs(s[i]) < abs(x)) i++; /* 从左向右找第一个绝对值大于x的数 */ if (i < j) s[j--] = s[i]; } s[i] = x; quick_sort(s, l, i - 1); /* 递归调用 */ quick_sort(s, i + 1, r); }}int main(){ int d,M=0;//M为组号 int maray[T];//负数数组 int paray[T];//正数数组 int aray[T];//输入的数组 while(scanf("%d",&d)!=EOF&&d<=T){ int j=0,k=0,mnum=0,pnum=0;//j为负数数组下标 k为正数数组下标 mnum为负数总数 pnum为正数总数 long long pmax=1;//最大乘积 long long mmax=1;//定义负数最大乘积 memset(maray,0,sizeof(maray)); memset(paray,0,sizeof(paray)); memset(aray,0,sizeof(aray)); for (int i = 0; i < d; i++) { scanf("%d",&aray[i]); if (aray[i]<0) { maray[j]=aray[i]; mmax*=maray[j]; //求负数最大乘积 j++; mnum++; } else if (aray[i]>0) { paray[k]=aray[i]; pmax*=paray[k]; //求正数最大乘积 k++; pnum++; } } if (mnum%2!=0) { if (mnum==1) { mmax=1; } else{ quick_sort(maray,0,j-1); mmax=mmax/maray[0]; } } pmax*=mmax; if ((pnum==0&&mnum==1)||(pnum==0&&mnum==0)) { pmax=0; } M++; printf("Case #%d: The maximum product is %lld.\n\n",M,pmax); } return 0;}

转载于:https://www.cnblogs.com/aizc/p/7576278.html

你可能感兴趣的文章
激活office 365 的启动文件
查看>>
无法根据中文查找
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
转载 python多重继承C3算法
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
css文本溢出显示省略号
查看>>
git安装和简单配置
查看>>
面向对象:反射,双下方法
查看>>
鼠标悬停提示文本消息最简单的做法
查看>>
课后作业-阅读任务-阅读提问-2
查看>>
面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序...
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>
Linux设置环境变量的方法
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>