【发布时间】:2018-10-04 10:45:29
【问题描述】:
Input:4
Input: 4 2 3 6
Output :29
解释:
- 对数组进行排序,然后添加 2+3=5 现在我们有 5 4 6
- 接下来我们添加 5+4=9 现在我们有 9 和 6
- 接下来我们添加 9+6=15,最后我们返回 29 作为解,它是 5+9+15=29 的总和
我必须为此编写代码。
这是我的代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
vector<int> box;
for (int i = 0; i < num; i++)
{
int temp;
cin >> temp;
box.push_back(temp);
}
sort(box.begin(), box.end());
vector<int> res;
int sum = box[0];
if (box.size() == 1)
{
cout << sum;
}
else
{
for (int i = 1; i < box.size(); i++)
{
sum = sum + box[i];
res[i] = sum;
}
res[0] = 0;
int result = 0;
for (int i = 0; i < res.size(); i++)
{
result += res[i];
}
cout << result;
}
}
代码无法正常运行并且遇到错误,有人可以帮忙吗? 这个问题似乎很简单,但我无法提出有效的解决方案。
【问题讨论】:
-
vector<int> res(num);当您调用[]时,res 为空。 -
与您的问题无关,但
bits/stdc++.h和using namespace std;的双重组合是一个非常糟糕的主意。事实上,最好避免两者。 -
请不要上传文字图片,而是在此处复制文字本身。链接可能会变坏,一些雇主会阻止图像,最重要的是:如果图像是代码,我们无法将代码复制到我们自己的 IDE。因此,请复制您的问题陈述的文本,而不是发布它的图片。另外,请详细说明“无法正常工作”。至少添加错误消息和行号,以便我们知道要查找的内容。
-
这看起来像是来自某个算法问题网站的竞争问题/问题。如果是这种情况,您可以发布指向原始来源的链接吗?否则,您能否分享输入值的数量及其大小的限制?