Find the Maximum sum
Given an array of n elements.Find the maximum sum when the array elements will be arranged in such way. Multiply the elements of each pair and add to get maximum Sum. Sum could be larger so take mod with 10^9+7.
Example1:
Input: n=
-,,,,-,-,
Output:
So to ,-},{-,},{,} and {}.So the answer *(-))+((-)*)+(*)+() ={}.
Example2:
Input: n=
-,,
Output:
So to ,} and {}.So the answer )*)+()={}.
Input:
The first line consists of an integer T i.e number of test cases. The first line of each test case consists of an integer n.The next line consists of n spaced integers(positive or negative).
Output:
Print the maximum sum % 10^9+7.
Constraints:
1<=T<=100
1<=n,a[i]<=10000
Example:
Input:
2
3
8 7 9
6
-1 9 4 5 -4 7
Output:
79
87
下面是我的代码实现:
主要思路:(假设0是负数)
先对于输入的数组进行排序。排序按照从小到大的顺序。
如果数组个数是偶数个,那么直接按照顺序两两相乘然后相加即可得到最大和。
如果数组个数是奇数,需要考虑正数负数的个数,其中负数为偶数个,正数是奇数个(例如:-7 -4 -1 0 4 5 9)只需要将负数依次两两相乘,忽略第一个正数,其余正数依次两两相乘再求和即可得到最大和。如果负数的个数是奇数个,正数是偶数个(例如:-7 -4 -1 4 5 9 10)只需要跳过最后一个负数,其余依次相乘然后相加即可得到最大和。
具体代码实现如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num,i;
scanf("%d",&num);
int *result=(int *)malloc(sizeof(int)*num);
;i<num;i++)
{
int N,j,k,temp;
;
scanf("%d",&N);
int *Arr=(int *)malloc(sizeof(int)*N);
;j<N;j++)
scanf("%d",&Arr[j]);
//首先是对于数组元素进行排序。这里随便用一个冒泡排序。
;j<N;j++)
{
;k<N;k++)
{
])
{
temp=Arr[k];
Arr[k]=Arr[k+];
Arr[k+]=temp;
}
}
}
==)//N是偶数,两两相乘即可。
{
;j<N;j=j+)
{
sum=sum+Arr[j]*Arr[j+];
}
}
else//N是奇数的情况
{
k=;
;j<N;j++)
{
)
{
k++;//记录负数的个数
}
}
==) //数组中正奇、负偶:跳过第一个正数Arr[k]
{
;j<N;j=j+)
{
if(j!=k)
{
sum=sum+Arr[j]*Arr[j+];
}
else
{
sum=sum+Arr[k];
j--;
}
}
}
else//数组中正偶、负奇:跳过最后一个负数Arr[k-1]
{
;j<N;j=j+)
{
))
{
sum=sum+Arr[j]*Arr[j+];
}
else
{
sum=sum+Arr[k-];
j--;
}
}
}
}
result[i]=sum;
}
;i<num;i++)
printf("%d\n",result[i]);
;
}
但是这个程序,现在没有正确通过,在本地运行是没问题的,但是在geeksforgeeks上结果如下:

who can help me?
Find the Maximum sum的更多相关文章
- POJ2479 Maximum sum[DP|最大子段和]
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39599 Accepted: 12370 Des ...
- ural 1146. Maximum Sum
1146. Maximum Sum Time limit: 0.5 secondMemory limit: 64 MB Given a 2-dimensional array of positive ...
- UVa 108 - Maximum Sum(最大连续子序列)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- 最大子矩阵和 URAL 1146 Maximum Sum
题目传送门 /* 最大子矩阵和:把二维降到一维,即把列压缩:然后看是否满足最大连续子序列: 好像之前做过,没印象了,看来做过的题目要经常看看:) */ #include <cstdio> ...
- URAL 1146 Maximum Sum(最大子矩阵的和 DP)
Maximum Sum 大意:给你一个n*n的矩阵,求最大的子矩阵的和是多少. 思路:最開始我想的是预处理矩阵,遍历子矩阵的端点,发现复杂度是O(n^4).就不知道该怎么办了.问了一下,是压缩矩阵,转 ...
- ural 1146. Maximum Sum(动态规划)
1146. Maximum Sum Time limit: 1.0 second Memory limit: 64 MB Given a 2-dimensional array of positive ...
- UVa 10827 - Maximum sum on a torus
题目大意:UVa 108 - Maximum Sum的加强版,求最大子矩阵和,不过矩阵是可以循环的,矩阵到结尾时可以循环到开头.开始听纠结的,想着难道要分情况讨论吗?!就去网上搜,看到可以通过补全进行 ...
- POJ 2479 Maximum sum 解题报告
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40596 Accepted: 12663 Des ...
- [LeetCode] Maximum Sum of 3 Non-Overlapping Subarrays 三个非重叠子数组的最大和
In a given array nums of positive integers, find three non-overlapping subarrays with maximum sum. E ...
随机推荐
- 多线程编程 - PHP 实现
* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...
- Numpy入门 - 数组切片操作
本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...
- springMVC+commons-fileupload上传文件大小限制异常
异常信息: 严重: Servlet.service() for servlet [suibian] in context with path [/SpringMvcDemo3] threw excep ...
- kvm虚拟机管理 系统自动化安装
原创博文安装配置KVM http://www.cnblogs.com/elvi/p/7718574.htmlweb管理kvm http://www.cnblogs.com/elvi/p/7718582 ...
- 蓝桥杯 剪邮票 全排列+DFS
剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是 ...
- 38.Linux驱动调试-根据系统时钟定位出错位置
当内核或驱动出现僵死bug,导致系统无法正常运行,怎么找到是哪个函数的位置导致的? 答,通过内核的系统时钟,因为它是由定时器中断产生的,每隔一定时间便会触发一次,所以当CPU一直在某个进程中时,我们便 ...
- 如何在HTTP头中隐藏PHP版本号
PHP 配置默认允许服务器在 HTTP 响应头 X-Powered-By 中显示安装在服务器上的 PHP 版本.出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你 ...
- YiShop_最全微信营销涨粉技巧
在我们开始推广企业订阅号之前,我们必须思考微信营销策略,客户通过微信可以获得什么?企业通过微信可以得到什么?微分销专家建议企业微信定位为互动.服务工具,因为获取一个粉丝很难,可是失去一个粉丝,却是一件 ...
- C++ vector 常用API
vector: 向量容器,动态数组,类模板 定义和初始化: vector<T> v1; //v1是空vector,元素类型是T类型,执行默认初始化,int为0,string为空串 vect ...
- 移动端 cursor:pointer问题
之前一直没有注意过,为元素设置上cursor:pointer属性后,会导致元素点击时出现一个蓝色的背景. 为元素设置-webkit-tap-highlight-color: transparent;可 ...