nyoj--44- - 하위 문자열과 (동적 기획)

1180 단어
하위 열 및
시간 제한:
5000ms | 메모리 제한:
65535 KB
난이도:
3
묘사
정형 수열 {a1,a2...,an}을 정하고 연속적인 비공식 서브열 {ax,ax+1,...,ay}을 찾아 이 서브 서열의 합을 최대화시킨다. 그 중에서 1<=x<=y<=n.
입력
첫 번째 행은 테스트 데이터의 그룹 수를 나타내는 정수 N(N<=10)입니다.
각 그룹의 테스트 데이터의 첫 번째 줄은 하나의 정수 n으로 서열에 모두 n개의 정수가 있음을 나타낸다. 그 다음에 한 줄에 n개의 정수 I(-100=출력
각 그룹의 테스트 데이터 출력과 최대 연속 서브열의 합.
샘플 입력
1
5
1 2 -1 3 -2

샘플 출력
5

프롬프트
입력 데이터가 많기 때문에scanf를 사용하여 입력하는 것을 추천합니다
출처
고전적 문제
이런 문제는 최근에 늘 만나는데, 바로 무뇌가이고, 그 다음에 비교와 판단을 하는 것이다.
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[1000100];
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		memset(a,0,sizeof(a));
		int n;
		scanf("%d",&n);
		for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
		int sum,max;
		sum=max=a[0];
		for(int i=1;i<n;i++)
		{
			sum+=a[i];
			if(sum<0)
			sum=0;
			if(sum>max)
			max=sum;
		}
		printf("%d
",max); } return 0; }

좋은 웹페이지 즐겨찾기