网站建设佰首选金手指十六,江门外贸网站推广方案,多语言网站建设公司,seo优化效果P1115 最大子段和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目要求求连续得一段子串使其累加和最大。
我们做动态规划首先考虑小情况#xff0c;然后推而广之。
假设三个数1#xff0c;-2#xff0c;5.
我们先选1然后我们在-2以及-2加1里边选#xff0c;我们选…P1115 最大子段和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目要求求连续得一段子串使其累加和最大。
我们做动态规划首先考虑小情况然后推而广之。
假设三个数1-25.
我们先选1然后我们在-2以及-2加1里边选我们选-1接着我们在-1以及5里边选我们选择5
由此我们发现我们选择是从以第n-1个数结尾的最长长度加上第n个数同第n个数比取最大的。
正如我们在判断第二个数-2时我们不确定加上第二个数是否可行因为要求连续所以我们
针对第二个数的策略只有加与不加不加就从第二个数开始为起点加的话就累加算最大的。
同时我们还要在以某个数为终点的累加中取最大的。 import java.awt.FontFormatException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.AnnotatedWildcardType;
import java.math.BigInteger;
import java.net.DatagramPacket;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Objects;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Spliterator.OfPrimitive;
import java.util.function.IntToDoubleFunction;
import java.util.function.LongBinaryOperator;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.management.relation.InvalidRelationTypeException;
import javax.print.attribute.standard.JobMessageFromOperator;
import javax.print.attribute.standard.JobPriority;
import javax.swing.plaf.ColorChooserUI;
import javax.swing.table.TableModel;
import javax.swing.text.TabSet;
import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
public class Main {public static void main(String[] args) throws IOException {
Scanner scnew Scanner(System.in);
BufferedReader br1new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw1new PrintWriter(System.out);
String[] aStringsbr1.readLine().split( );
int aInteger.parseInt(aStrings[0]);
aanew int[a];
String[] bStringsbr1.readLine().split( );
int b;
for(b0;ba;b) {aa[b]Integer.parseInt(bStrings[b]);
}
int[] dpnew int[a1];
dp[0]aa[0];
int answeraa[0];
for(b1;ba;b) {dp[b]Math.max(aa[b], dp[b-1]aa[b]);answerMath.max(answer, dp[b]);
}
System.out.println(answer);}
public static int[] aa;}