O(n)解决三维数组赋值

O(n)解决三维数组初始化

正常思维初始化三维数组,一般都是三个for循环嵌套,其实用一个巧妙的数学公式就能将三次循环简化到一次循环,即时间复杂度为O(n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main() {
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
int array[x][y][z];
for(int i = 0; i < x * y * z; i++) {
array[i / (y * z)][(i / z) % y][i % z] = i;
printf("\t%d", array[i / (y * z)][(i / z) % y][i % z]);
if((i + 1) % z == 0) {
printf("\n");
}
}
return 0;
}