我正在嘗試一些比賽問題,當然,通過他們衝過來沒有邏輯來看看我的最快時間。然而,這是我無法去上班的那個...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