Boa tarde a todos do GUJ.
Pessoal tenho o seguinte o problema abaixo.
Uma subsequência contígua de uma sequencia S é uma subsequencia de elementos consecutivos de S. Por exemplo, se S = {5 15 -30 10 -5 40 10}, então (15 -30 10) é uma subsequencia contígua de S, mas (5 15 40) não é. Desse vetor a soma da maior subsequencia é (10 -5 40 10) que é igual a 55.
Então pessoal, ja fiz o algoritmo que me retorna a soma da maior subsequencia que é o seguinte abaixo.
O que eu gostaria de fazer era um vetor que me retornasse esses elemento. Segue abaixo o meu código.
//Resultado 75 { 10, -5, 40, 10, 5, 15, -30 }
package SegundaLista;
import java.util.Vector;
public class ExercicioCanaQ5i
{
public static void main(String[] args)
{
//int[] s = {5, 15, -30, 60, -10, -20, -30};
//int[] s = {5, 15, -30, 10, -5, 40, 10, -65, 10, -10, 45, 10};
//int[] s = {10, -5, 40, 10, 5, 15, -90, 15, 20, 80, -10, 50};
int[] s = {5,30,-15,-5,20,15,-52,5,5,19,15,-40,-5,30,40,-50,-5,70,5,15,-80,10,-5,30};
Vector s1 = new Vector();
int valor = 0;
for (int i = 0; i < s.length; i++)
{
int soma = valor;
soma = soma + s[i];
if (s[i] > soma) { valor = s[i]; }
else { valor = soma; }
s1.add(soma);
}
int max = (Integer) s1.get(0);
for (int i = 0; i < s1.size(); i++)
{
int scan = (Integer) s1.get(i);
if (max < scan) max = scan;
}
System.out.println("Resultado: " + max);
}
}
Alguém pode me dizer como que posso fazer isso?
Desde de já obrigado pela atenção de todos.