bjfuoj 최장 연속 및 (동적 기획)
길이가 n인 시퀀스 A1, A2,...,An, 최대 연속화, 즉 i와 j를 찾아서 1<=i<=j<=n 및 Ai+...+Aj는 가능한 한 크다.
입력
입력한 첫 번째 동작은 데이터 그룹 수를 나타내는 정수 T(1<=T<=20)입니다.다음은 T조 테스트 데이터로 각 조의 데이터는 두 줄로 나뉘는데 첫 번째 줄은 하나의 정수 n(1<=n<=100000)이고 두 번째 행위는 n개의 정수이며 각 정수의 범위는 [-2^31,2^31-1]이다.
출력
각 그룹에 대해 입력한 데이터를 최대 연속 및 행으로 출력합니다.
샘플 입력 1
2
5
6 -1 5 4 -7
8
7 0 6 -1 1 -6 7 -5
샘플 출력 1
14
14
#include
#include
#include
using namespace std;
long long max(long long a, long long b) { return (a > b)?a:b; }
long long min(long long a, long long b) { return (a < b)?a:b; }
int main()
{
int a, b, c;
while (cin >> a)
{
for (int i = 0; i < a; i++)
{
cin >> b;
long long sum = 0, minn = 0, maxn = 0;
// for 0,
cin >> c;
sum = maxn = c;
for (int j = 1; j < b; j++)
{
cin >> c;//
minn = min(minn, sum);//
sum += c;//
//
maxn = max(maxn, sum - minn);
// ,
}
cout << maxn << endl;
}
}
}
#include
#include
#include
#include
using namespace std;
long long A[100010], B[100010];
int main()
{
int n;
long long a, maxn;
while (cin >> n) {
for (int i = 0; i < n; i++)
{
cin >> a;
cin >> A[0];
B[0] = A[0];
maxn = B[0];
for (int i = 1; i < a; i++)
{
cin >> A[i];
B[i] = max(B[i - 1] + A[i], A[i]);
if (B[i] > maxn)maxn = B[i];
}
cout << maxn << endl;
}
}
return 0;
}
요구 사항의 최대 연속과 존재 A 그룹에 B 그룹 저장 상태
상태 이동 방정식은
B[i] = max(B[i - 1] + A[i], A[i]);
예를 들어 첫 번째 입력:
a[i] 6 -1 5 4 -7
b[i] 6 5 10 14 7
b[i]의 최대치 14는 최대 연속 및 입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.