我正在尝试解决家庭作业中的一个问题,但是我卡住了。
这是任务:
编写一个程序以读取整数数组,并通过将相邻的几对元素求和来压缩它们,直到获得单个整数。例如,如果我们有3个元素{2,10,3},我们将前两个元素和后两个元素相加,得到{2 + 10,10 + 3} = {12,13},然后我们再次将所有相邻元素相加元素并获得{12 + 13} = {25}。
这是我到目前为止所做的,但是我卡住了,不知道如何继续。
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(input[i]);
}
int sum = 0;
int[] condensed = new int [arr.length-1];
System.out.println(condensed.length);
while (condensed.length > 1) {
for (int i = 0; i < condensed.length; i++) {
condensed[i] = arr[i] + arr[i+1];
}
}
if (condensed.length == 1) {
sum = condensed[0] + condensed[1];
System.out.println(sum);
}
输入为“ 5 0 4 1 2”,输出应为“ 35”,但我得到“ 4”。
答案 0 :(得分:1)
鉴于您已经从输入中获得了数组(int arr[]
)或数字转换器,则可以从第一个元素到第一个元素连续循环遍历该数组,最后将那个值添加到下一个值并存储它们放在一个临时数组中。
然后您将temp数组替换为value数组,并继续该过程,直到该数组的长度等于1。
while (arr.length > 1) {
int temp[] = new int[arr.length - 1];
for (int i = 0; i < arr.length - 1; i++) {
temp[i] = arr[i] + arr[i + 1];
}
arr = temp;
}
答案 1 :(得分:0)
我已经写了一个示例代码,如果遇到麻烦可以扩展:
int[] a1 = new int[] {2, 10 , 3};
int[] a2 = new int[2];
int[] a3 = new int[1];
for(int i = 0; i < a1.length - 1; i++)
a2[i] = a1[i] + a1[i + 1];
for(int i = 0; i < a2.length - 1; i++)
a3[i] = a2[i] + a2[i + 1];
System.out.println(a3[0]);
通常,您将生成N个int数组(N = arr.length-1)并用循环填充它们