首页 > 解决方案 > 如何从数组中间开始循环?

问题描述

有一个给定的伪代码。

int Function(X : array[P..Q] of integer)
  
1 maxSoFar = 0
  
2 for L = P to Q

我正在使用 C 并试图将其更改为 C++ 代码。

我苦苦挣扎的原因是我不知道如何表达它是从循环中的“P”开始的。即使没有参数,我也不知道如何在初始化之前做到这一点。

 int  Function(vector<int> X)
 {
   int maxSoFar = 0;
   for (int I = 0; I < X.size(); I++) ;
 }

这就是我所做的。我想知道它是否与伪代码相同。

标签: c++

解决方案


您可以将矢量大小除以 2:

#include <vector>
#include <iostream>

using namespace std;

int  f(vector<int> v) {
    int maxSoFar = 0;
    int len = v.size();
    for (int i = len / 2; i < len; i++) { // i = len / 2, starts from the middle
        maxSoFar += v[i];
        cout << v[i] << ' ';
        cout << maxSoFar << endl;
    }
}

int main(void) {
    vector<int> v = {1, 3, 5};
    f(v);
}

输出:

3 3
5 8

您应该仔细查看wikipedia 上的 for 循环for (initialization; break condition; incrementation)


推荐阅读