【发布时间】:2015-06-05 11:29:14
【问题描述】:
我有一个包含 n 个元素的数组,我需要计算两个元素对 (array[i]+array[j]) 的所有 n*n 和。所有和都按升序排列。我需要找到第 K 个总和
例如:
数组[] = {3,4,5}
所有和:{(3+3),(3+4),(4+3),(3+5),(5+3),(4+4),(4+5),( 5+4),(5+5)}
K = 6
我需要找到第 K 个总和的值(在这种情况下,第 6 个总和是 4+4,我将返回 8);
解决方案可能非常理想
这是我的解决方案;这不是最佳的:
for(i=0;i<n;i++)
fin>>a[i];
qsort(a, n, sizeof(int), int_cmp);
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
sum[k]=a[i]+a[j];
if(i!=j)
sum[++k]=a[i]+a[j];
k++;
}
qsort(sum, n*n, sizeof(int), int_cmp);
cout<<sum[nrs-1];
【问题讨论】:
-
那么问题出在哪里?你写了什么代码?
-
我需要一个想法来实现这个。我已经实现了,但效率低下
-
如果您发布了代码,也许我们可以帮助您改进它。我不知道这个网站上是否有人会花时间为你写,虽然看起来并不难。
-
我解决了这个问题,但效率低下。我需要一个想法
-
我不需要实现。我想要一个想法或一个简单的算法
标签: c++ arrays search sum binary-search