在一个序列中,求一个递增序列的最大和

在一个序列中,求一个递增序列的最大和

package com.li.haoweilai;

import java.io.InputStream;
import java.util.Scanner;

/**
 * @program: GradleTestUseSubModule
 * @author: Yafei Li
 * @create: 2018-08-28 18:30
 **/
public class Main5 {
    public static void main(String[] args){
        Main5 main1=new Main5();
        Class clazz = main1.getClass();
        InputStream Systemin = clazz.getResourceAsStream("/haoweilai/main5");
        Scanner scanner = new Scanner(Systemin);

        int N=100;
        int[][] douarrs=new int[N][N];
        int[] arri = new int[100];
        int index=0;
        while (scanner.hasNextInt()) {
            arri[index++]=scanner.nextInt();
        }

        for (int i = 0; i < N; i++) {
            douarrs[i][i]=arri[i];
        }

        for (int i = 0; i < N; i++) {
            if (arri[i] > arri[0]) {
                douarrs[0][i] = arri[0] + arri[i];
            }else {
                douarrs[0][i]=arri[i];
            }
        }

        int max=0;
        for (int i = 1; i < N; i++) {
            for (int j = i; j < N; j++) {
                if ( j==i) {
                    douarrs[i][j]=douarrs[i-1][j];
                    if (douarrs[i][j] > max) {
                        max = douarrs[i][j];
                    }
                }else if(arri[j]>arri[i] && douarrs[i][i]+arri[j] > douarrs[i-1][j]){
                    douarrs[i][j]=douarrs[i][i]+arri[j];
                    if (douarrs[i][j] > max) {
                        max = douarrs[i][j];
                    }
                }else {
                    douarrs[i][j]=douarrs[i-1][j];
                    if (douarrs[i][j] > max) {
                        max = douarrs[i][j];
                    }
                }
            }
        }

        System.out.print(max);
    }
}

数据

5 1 3 4 9 7 6 8

结果23  

是1 3 4 7 8 递增序列和的最大值。

原文地址:https://www.cnblogs.com/liyafei/p/9551015.html