1 条题解
-
1
#include <bits/stdc++.h> using namespace std; int main() { // 1. 输入数组长度 n int n; cin >> n; // 2. 定义普通数组(动态大小,C++支持变长数组) int nums[n]; // 3. 循环输入 n 个数字,存入数组 for (int i = 0; i < n; i++) { cin >> nums[i]; } // 4. 定义两个变量,用于动态规划求解最大子数组和 // cur:以当前元素结尾的最大子数组和 // res:全局最大子数组和 // 必须用第一个元素初始化,因为数组至少有一个元素 int cur = nums[0]; int res = nums[0]; // 5. 从第二个元素开始遍历数组(下标从 1 开始) for (int i = 1; i < n; i++) { // 核心公式: // 要么把当前数加入前面的子数组 // 要么从当前数重新开始 cur = max(cur + nums[i], nums[i]); // 更新全局最大值 res = max(res, cur); } // 6. 输出最终结果 cout << res << endl; return 0; }
- 1
信息
- ID
- 1082
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 10
- 已通过
- 10
- 上传者
粤公网安备44195502000195号