프로그램 경연 공략을위한 알고리즘 및 데이터 구조 ALDS_1_1_D : Maximum Profit p46
4967 단어 C++SublimeText3프로그래밍 콘테스트알고리즘
sablime txt3에서 실행하면 입력이 불가능하기 때문에 수동 입력 부분을 주석 처리했습니다.
#include "iostream"
// #include "algorithm"
using namespace std;
// static const int MAX = 200000;
int main()
{
/* 手動入力
int R[MAX],n;
cin >> n;
for (int i = 0; i < i < n; ++i) {
cin >> R[i];
}
*/
const int n = 6;
int R[n]={5,3,1,3,4,3};
int maxv = R[1] - R[0];
int minv = R[0];
for (int j = 1; j < n; ++j) {
maxv = max(maxv, R[j] - minv);
minv = min(minv, R[j]);
}
cout << maxv << endl;
return 0;
}
입력
출력
6개
이익 3
R[0] = 5
R[1] = 3
R[2] = 1
R[3] = 3
R[4] = 4
R[5] = 3
maxv R[1]-R[0] = -2(또는 -10^9 이하)
minv R[0] = 5 R[j]의 최소값
R [j]보다 왼쪽의 최소값을 기억합니다.
그것을 R[j]의 최고치에서 빼면 대답이 나온다.
알고리즘
J를 1에서 n-1까지(=전부 조사한다)
maxv maxv와 R[j]-minv의 큰 쪽
minv minv와 R[j] 중 작은 사람
j
R
maxv
minv
R[0] = 5
-2
5
1
R[1] = 3
-2
3
2
R[2] = 1
-2
1
3
R[3] = 3
2
1
4
R[4] = 4
3
1
5
R[5] = 3
3
1
참고도서
프로그래밍 경연 공략을 위한 알고리즘과 데이터 구조 곧 이해할 수 없었기 때문에 메모. 아직도 이중 루프가 되면, 어느 수치가 어떻게 움직이는지 순간에 이해할 수 없다, 이것은 횟수를 거듭해 문제를 풀 수밖에 없다··orz.
Reference
이 문제에 관하여(프로그램 경연 공략을위한 알고리즘 및 데이터 구조 ALDS_1_1_D : Maximum Profit p46), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masakinihirota/items/a8261276e4089430af38텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)