我想以半压缩的方式循环遍历两个数组,以便对于尽可能多的条目,观察到以下模式:

arr1[i]   arr2[j]
arr1[i]   arr2[j+1]
arr1[i+1] arr2[j+2]
arr1[i+1] arr2[j+3]
....

例如,如果len arr1是96,len arr2是3,我希望看到
0 0
0 1
1 2
1 0
2 1
2 2
3 0
3 1
4 2
4 0
5 1
5 2

我很难把逻辑弄清楚,如有任何帮助,将不胜感激

最佳答案

伪码:

i = 0;
for (x = 0; i < arr1.len; ++x) {
    i = x / 2;  // integer division
    j = x % arr2.len;
    // use arr1[i] and arr2[j]
}

在转到下一个值(例如,0 0 1 1 2 2 3 3…)之前,使用整数除法重复一个值多次,其中要重复的值的次数等于分母。
使用模除法无限期地重复一个值序列(例如,0 1 2 0 1 2 0 1 2…),其中序列中的项数等于分母。

关于c - 在C中以二乘二循环遍历嵌套循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41079091/

10-16 10:35