指定された配列内の最長のサブシーケンスの合計と長さをカウントしたかったのt
です。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class so {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
br.close();
int[] t = new int[s.length];
for (int i = 0; i < s.length; i++) {
t[i] = Integer.parseInt(s[i]);
}
int length = 1;
int sum = t[0];
int maxSum = 0;
int maxLength = 0;
for (int i = 1; i < t.length; i++) {
for (; i < t.length && t[i - 1] <= t[i]; i++) {
length++;
sum += t[i];
System.out.print(t[i] + " ");
}
if (length > maxLength) {
maxLength = length;
maxSum = sum;
length = 1;
sum = 0;
i--;
}
}
System.out.println("sum is " + maxSum + " length is " + maxLength);
}
}
出力される数値について1 1 7 3 2 0 0 4 5 5 6 2 1
:
sum is 20 length is 6
しかし、同じ番号を逆の順序1 2 6 5 5 4 0 0 2 3 7 1 1
で出力すると、次のようになります。
sum is 17 length is 6
を取得する必要があるため、これは正しくありませsum is 12 length is 5
ん。
誰かが私の間違いを見つけることができますか?