Упражнения на Java: вычисление максимального значения суммы передаваемых целых чисел
Java Basic: упражнение 240 с решением
Расположите целые числа (от 0 до 99) как узкую вершину холма, как показано на рисунке 1. Чтение таких данных, представляющих огромные, начиная с вершины и продолжая согласно следующему правилу до низа. ,
Напишите программу на Java, которая вычисляет максимальное значение суммы передаваемых целых чисел.
Входные данные :
Ряд целых чисел, разделенных запятыми, указан в ромбах. В каждой строке нет пробелов. Пример ввода соответствует рисунку 1. Количество строк данных составляет менее 100 строк.
Вывод: максимальное значение суммы целых чисел, проходящих по правилу в одной строке.
Иллюстрированная презентация:
Пример решения:
Java-код:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
System.out.println("Input the numbers (ctrl+c to exit):");
Scanner sc = new Scanner(System.in);
List<String> l = new ArrayList<String>();
while(sc.hasNext())l.add(sc.next());
int n = l.size();
int[][] a = new int[n][];
for(int i=0;i<n;i++){
String[] s = l.get(i).split(",");
int k = s.length;
a[i] = new int[k];
for(int j=0;j<k;j++)a[i][j]=Integer.parseInt(s[j]);
}
int[] sd = {a[0][0]};
for(int i=1;i<n;i++){
int[] tmp = new int[a[i].length];
for(int j=0;j<tmp.length;j++){
if(i<=n/2){
if(j==0)tmp[j]=sd[j]+a[i][j];
else if(j==tmp.length-1)tmp[j]=sd[j-1]+a[i][j];
else tmp[j]=Math.max(sd[j-1]+a[i][j], sd[j]+a[i][j]);
}
else{
tmp[j] = Math.max(sd[j]+a[i][j], sd[j+1]+a[i][j]);
}
}
sd = tmp;
}
System.out.println("Maximum value of the sum of integers passing according to the rule on one line.");
System.out.println(sd[0]);
}
}
Пример вывода:
Введите цифры (Ctrl + C для выхода): 8 4,9 9,2,1 3,8,5,5 5,6,3,7,6 3,8,5,5 9,2,1 4,9 8 Максимальное значение суммы целых чисел, проходящих по правилу на одной строке. 64
Блок - схема:
Редактор кода Java:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите Java-программу, чтобы вырезать слова длиной от 3 до 6 символов из данного предложения не более 1024 символов.
Далее: Напишите программу на Java, чтобы найти число комбинаций, которые удовлетворяют p + q + r + s = n, где n - это заданное число <= 4000, а p, q, r, s в диапазоне от 0 до 1000.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования