文章

85

粉丝

0

获赞

561

访问

12.1k

头像
最大子串和 题解:
P1703 厦门大学复试机试题
发布于2026年3月8日 15:13
阅读数 182

#include <bits/stdc++.h>
using namespace std;
int num[105];
int dp[105];
int main() {
    int n;
    while (cin >> n) {
        for (int i = 0; i < n; i++) {
            cin >> num[i];
        }
        int start = 0, end = 0;
        int best_start = 0, best_end = 0;
        int max_sum = num[0];
        dp[0] = num[0];
        for (int i = 1; i < n; i++) {
            if (dp[i-1]+num[i]<num[i]) {
                dp[i] = num[i];
                start = i;
                end = i;
            }
            else {
                dp[i] = dp[i-1]+num[i];
                end++;
            }
            if (max_sum < dp[i]) {
                max_sum = dp[i];
                best_start = start;
                best_end = end;
            }
        }
        for (int i = best_start; i <= best_end; i++) {
            cout << num[i] << " ";
        }
        cout << endl;
        cout << max_sum &l...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发