连续子段的最大和
#include<iostream> using namespace std; int main() { int n; while (cin >> n) { int num[10000]; for (int i = 1; i <= n; i++) { cin >> num[i]; } int dp[10000]; for (int i = 1; i <= n; i++) { dp[i] = 0; } dp[1] = num[1]; for (int i = 2; i <= n; i++) { dp[i] = max(dp[i - 1] + num[i], num[i]); } int ans = dp[1]; for (int i = 2; i <= n; i++) { if (dp[i] > ans) ans = dp[i]; } cout << ans << endl; } return 0; }

浙公网安备 33010602011771号