【发布时间】:2020-11-01 13:36:15
【问题描述】:
使用函数getNextIdx,我想接收一个数组的新索引,该索引取决于当前索引和该索引处数组的值。
我希望函数通过将当前索引与该索引处的数组值相加来返回新索引,模块化为数组大小。
#include<vector>
using namespace std;
int getNextIdx(int currentIdx, vector<int> array) {
int jump = array[currentIdx];
int nextIdx = (currentIdx + jump) % array.size();
return (nextIdx >= 0) ? nextIdx : nextIdx + array.size();
}
int main() {
vector<int> test = {2, 3, 1, -4, -4, 2};
int nextIdx = getNextIdx(3, test);
}
示例:如果当前索引为 3(第 4 个元素),数组中第 4 个元素的值为 -4,数组大小为 6,则函数应返回 5。
问题是我的程序在上面的例子中返回 3。
【问题讨论】:
-
您的 c++ 概念有点不清楚。当前索引在您的情况下为 3(array[currentIdx] => array[3]) 将给出元素-4。你的问题也有点不清楚。让我知道您的输入和输出。
-
%operator 对负数有点奇怪,请参阅 stackoverflow.com/questions/11720656/… 在使用%解决问题之前将您的数字设为正数 -
@AlanBirtles,使用负数很好(对某些人来说有点奇怪,真的,但它仍然很好)。这里的问题是整数类型的混合。
-
我们在过去 2 周内遇到过这个问题大约 6 次