我正在尝试一些比赛问题,当然,通过他们冲过来没有逻辑来看看我的最快时间。然而,这是我无法去上班的那个...Java如果语句不适用于这种情况?
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
ArrayList<Integer> values = new ArrayList<>();
int n = input.nextInt();
for(int i = 0; i < n; i++) {
values.add(input.nextInt());
}
boolean done = false;
while(!done) {
System.out.println("Beginning");
for(int i = 0; i < values.size(); i++) {
System.out.print(values.get(i) + " ");
}
System.out.println();
done = true;
int changes = 1;
while(changes != 0) {
changes = 0;
for (int i = 0; i < values.size() - 1; i++) {
if (values.get(i) == values.get(i + 1)) {
values.set(i, values.get(i) * 2);
values.remove(i + 1);
done = false;
changes += 1;
}
}
}
System.out.println("Middle");
for(int i = 0; i < values.size(); i++) {
System.out.print(values.get(i) + " ");
}
System.out.println();
changes = 1;
while(changes != 0) {
changes = 0;
for(int i = 1; i < values.size() - 1; i++) {
System.out.println("i - 1 " + values.get(i - 1));
System.out.println("i + 1 = " + values.get(i + 1));
if(values.get(i - 1) == values.get(i + 1)) {
System.out.println("REACHED");
values.remove(i + 1);
values.set(i - 1, values.get(i - 1) * 2 + values.get(i));
values.remove(i);
done = false;
changes += 1;
}
}
}
System.out.println("Final");
for(int i = 0; i < values.size(); i++) {
System.out.print(values.get(i) + " ");
}
System.out.println();
}
int max = 0;
for(int i = 0; i < values.size(); i++) {
int check = values.get(i);
if(check > max) {
max = check;
}
}
System.out.println(max);
}
}
,我试图修复代码是它说:“打进”的一部分,尽管的(I - 1)的值和(i + 1)确实等于根据控制台输出,程序不会继续执行if语句后的语句。我的方式有什么错误吗?
仅供参考,这是我正在看的问题。我花了1小时的字面调试。
阿方斯有连续不同大小的N个饭团。他想形成 他的朋友可以吃的最大的饭团。阿方可以 执行以下操作:
- 如果两个相邻的饭团具有相同的大小,阿方可以将它们结合起来,使一个新的饭团。新饭团的大小是两个旧饭团大小的总和 。它占据了先前被两个旧饭团占据的行 中的位置。
- 如果两个饭团的大小相同,并且它们之间恰好有一个饭团,那么Alphonse可以将所有三个饭团结合成一个新的饭团。 (中间的米饭团不需要与其他两个大小相同的 大小)。新的米饭团的大小是 三个老米饭团的大小的总和。它占据了之前被三个老式饭团占据的排 中的位置。阿尔方斯可以 执行每个操作多次,因为他想要的。
确定 执行0个或更多操作后,该行中最大的饭团的大小。
输入规范第一行将包含整数N(1≤ N≤400)。下一行将按照从左到右的顺序包含代表米球大小的N空格分隔整数 。 每个整数是至少1且至多1 000 000
- 对于15个可用标记的1,N = 4。
- 对于15个可用标记的额外2,N≤10.
- 对于15个可用标记中的另外5个,N≤50。输出规格输出最大的米球的尺寸 阿尔方斯可以形成。
好问题,但你可以将它煮成[几行代码](http://stackoverflow.com/help/mcve)而不是倾销这种怪物。 – shmosel