我有一个2D阵列,它是一个4x4的方阵。
首先,我生成了1234' 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,....
似乎标准的嵌套循环不能胜任。
答案 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循环]