如何使用一串排列迭代2D数组?

时间:2018-03-24 04:23:17

标签: java matrix multidimensional-array

我有一个2D阵列,它是一个4x4的方阵。

首先,我生成了1234&#39; 1234的排列。 S = "1234124313241423........."(事实上它应该是&#39; 0123&#39;,现在让我们忽略它。)如果它是5x5那么它将是&#39; 12345&#39; < / p>

我想迭代一个2D数组,并用以下方式对每4个元素求和:

  • 行索引遵循固定模式1234,1234,1234。

  • 从置换字符串中拉出列索引。

输入2D数组,这是一个4x4矩阵:

{9,2,7,8},
{6,4,3,7},
{5,8,1,8},
{7,6,9,4}

2D阵列可以表示为[i] [j],i表示行,j表示列,列是从S =&#34; 1234124313241423&#34;从字符串中删除每4位数字。

                                  index          index
Read from left to right

a11+a22+a33+a44    => 9+4+1+4=18     rows: 1 2 3 4  columns: 1 2 3 4

a11+a22+a34+a43    => 9+4+8+9=30     rows: 1 2 3 4  columns: 1 2 4 3

a11+a23+a32+a44    => 9+3+8+4=24     rows: 1 2 3 4  columns: 1 3 2 4

a11+a24+a32+a43    ...........
   .
   .
   .

输出:18,30,24,....

似乎标准的嵌套循环不能胜任。

2 个答案:

答案 0 :(得分:1)

你需要有一个外循环,它将迭代任何行的次数...然后对于每个迭代增量i和j两者并得到值S [i] [j]外循环可以像while(k&lt ; noOfRows)..我要离开程序供你练习......

答案 1 :(得分:0)

String s = "123412431324...";
while(s.length() != 0){
  int sum=0;
  for(int j=0, i=0; j<n; j++, i++){
    sum += arr[i][Integer.parseInt(s.charAt(j))-1];
  }
  System.out.println(sum);
  s = s.substring(n);
}

你可以这样做。 你需要一个外部循环,它可以按你的数组的尺寸切割你的字符串,另一个循环来遍历你的数组,以便你可以总结元素。[仔细检查for循环]