1. 程式人生 > >HDU 1231 最大連續子序列(java)

HDU 1231 最大連續子序列(java)

題目型別:動態規劃

題解: 把n=0和全為負數的情況作為兩種特殊情況處理。 b[i]表示從c[i]到i中的序列和。當b[i-1]<0時c[i]記為當前i值。


import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner kb = new Scanner(System.in);
		while(kb.hasNext()) {
			int n=kb.nextInt();
			if(n==0) {
				break;
			}
			int a[]=new int
[n]; int b[]=new int[n]; int c[]=new int[n]; boolean pd=false; for(int i=0;i<n;i++) { a[i]=kb.nextInt(); if(a[i]>=0)pd=true; } if(!pd) { System.out.println(0+" "+a[0]+" "+a[n-1]); continue; } b[0]=a[0]; for(int i=1;i<n;i++) { if(b[i-1]>0) { b[
i]=b[i-1]+a[i]; c[i]=c[i-1]; }else { b[i]=a[i]; c[i]=i; } } int max=0; for(int i=0;i<n;i++) { if(b[i]>b[max])max=i; } System.out.println(b[max]+" "+a[c[max]]+" "+a[max]); } kb.close(); } }