入门赛最大求和求助
  • 板块学术版
  • 楼主Oliver_Kahn
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/5/17 23:10
  • 上次更新2024/5/18 10:25:25
查看原帖
入门赛最大求和求助
1321479
Oliver_Kahn楼主2024/5/17 23:10

样例AC,其他全部UKE

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> num{static_cast<unsigned long>(n), vector<int>{n, 0}};
    int ans = INT32_MIN;
    for (int i = 0; i < n; ++i) {
        int row = 0;
        for (int j = 0; j < n; ++j) {
            cin >> num[i][j];
            row += num[i][j];
        }
        ans = max(ans, row);
    }
    for (int j = 0; j < n; ++j) {
        int column = 0;
        for (int i = 0; i < n; ++i) {
            column += num[i][j];
        }
        ans = max(ans, column);
    }
    for (int j = 0; j < n; ++j) {
        int posUpItalic = 0;
        int negUpItalic = 0;
        for (int x = 0, y = j; x < n && y < n; ++x, ++y) {
            posUpItalic += num[x][y];
        }
        for (int x = 0, y = j; x < n && y >= 0; ++x, --y) {
            negUpItalic += num[x][y];
        }
        ans = max(ans, max(posUpItalic, negUpItalic));
    }
    for (int i = 0; i < n; ++i) {
        int posDownItalic = 0;
        int negDownItalic = 0;
        for (int x = i, y = 0; x < n && y < n; ++x, ++y) {
            posDownItalic += num[x][y];
        }
        for (int x = i, y = n - 1; x < n && y >= 0; ++x, --y) {
            negDownItalic += num[x][y];
        }
        ans = max(ans, max(posDownItalic, negDownItalic));
    }
    cout << ans;
    return 0;
}
2024/5/17 23:10
加载中...