我有以下程序来计算数组的"部分和".例如,如果我1, 1, 1, 1通过std::cin我的程序输入连续的整数将结果计算为数组1, 2, 3, 4.
#include <iostream>
int main()
{
int orig[10], copy[10];
std::cout << "please enter 10 numbers:" << std::endl;
for (int i = 0; i < 10; i++)
{
std::cin >> orig[i];
}
for (int i = 0; i < 10; ++i)
{
int sum = 0;
for (int k = i; k >= 0; --k)
{
sum += orig[k];
}
copy[i] = sum;
}
std::cout << "the ascending order is:\n" << endl;
for (int i = 0; i < 10; ++i)
std::cout << copy[i] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我希望有一种方法可以做到这一点,而无需将值复制到另一个数组.到目前为止,我还没弄清楚如何.正如您所看到的,在上面的代码中,我有一个名为copyinto 的整数数组,我将总和放入其中.我知道这可以使用std::vector,partial_sum但我宁愿不使用它,因为它不允许我完全理解这是如何工作的.
有任何想法吗?谢谢.
您不需要两个嵌套for循环.移动的初始化sum出的for环来跟踪的sum,你遍历orig.orig随sum你随便简单地覆盖值.
在伪代码中:
sum = 0
for each index i in array:
sum += array[i]
array[i] = sum
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |