2011-05-11 21 views
0

说我有一个像int[] x = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}一维数组。
我想它看起来像它CONVER到2D:如何将一维数组转换为2D列主要

1 5 9 13 
2 6 10 14 
3 7 11 15 
4 8 12 16 

目前,我有

for (int i = 0; i < 4; i++) 
{ 
    for (int j = 0; j < Nb; j++) 
     s[i][j] = x[i + j]; 
} 

但是,这并不工作。我将如何做到这一点?

+0

即二维数组看起来非常随机... – Neal 2011-05-11 18:47:56

回答

1

尝试

for (int i = 0, k=0; i < 4; i++) 
    for (int j = 0; j < Nb; j++) 
    s[j][i] = x[k++]; // you may want s[i][j] 
+0

谢谢你的工作另外,为什么我要s [i] [j],那不会工作。 – Raptrex 2011-05-11 18:55:58

+0

这取决于您是考虑首先查看行还是列。你的例子有'[i] [j]'这可能是有效的,这取决于你如何看待它。 – 2011-05-11 19:02:08

+0

循环中的Nb是什么? – 2014-05-21 01:45:25

0

不知道什么Nb是,但你遥远阅读初始阵列。尝试这样的:

for (int i = 0; i < 4; i++) 
    for (int j = 0; j < 4; j++) 
     s[j][i] = x[i*4 + j]; 
1

我认为流浪7是一个错字?

因为我们想内环向下移动,并且外向右移动,你可以这样做:

for i in (0..width) 
    for j in (0..height) 
     s[j][i] = x[i*height+j] 

跟踪了这一点说明了为什么它的工作原理:

s[0][0] = x[0*4+0] = x[0] 
s[1][0] = x[0*4+1] = x[1] 
... 
s[0][1] = x[1*4+1] = x[5] 
相关问题