求助啊啊,0分,吴老师救我QwQ!

P1719 最大加权矩形

___HatsuneMiku___ @ 2024-02-04 11:05:55

怎么写啊,吴老师救我!!

#include<bits/stdc++.h>
using namespace std;
const int M=120+5;
int a[M][M],b[M][M];
int main() {
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;i<=n;i++){
            cin>>a[i][j];
            b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j];
        }
    }
    int ans=INT_MIN;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            for(int k=1;k<=i-1;k++){
                for(int l=1;l<=j-1;l++){
                    int x1=k,y1=l,x2=i,y2=j;
                    int sum=b[x2][y2]-b[x1-1][y2]-b[x2][y1-1]+b[x1-1][y1-1];
                    ans=max(sum,ans);
                }
            }
        }
    }
    cout<<ans;
    return 0;
}

有什么问题啊啊啊,怎么办啊啊啊!!QwQ!!


by Karieciation @ 2024-02-04 12:11:23

#include<bits/stdc++.h>
using namespace std;
const int M=120+5;
int a[M][M],b[M][M];
int main() {
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;/*i*/j<=n;/*i*/j++){    // 第一处错误 
            cin>>a[i][j];
            b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j];
        }
    }
    int ans=INT_MIN;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            for(int k=1;k<=i/*-1*/;k++){
                for(int l=1;l<=j/*-1*/;l++){
                    // 第二处错误
                    int x1=k,y1=l,x2=i,y2=j;
                    int sum=b[x2][y2]-b[x1-1][y2]-b[x2][y1-1]+b[x1-1][y1-1];
                    ans=max(sum,ans);
                }
            }
        }
    }
    cout<<ans;
    return 0;
}

第一处我真的不想在说什么了,建议练练代码能力


by Karieciation @ 2024-02-04 12:11:56

这样就过了


by Karieciation @ 2024-02-04 12:17:52

第二处错误是你没有判到单点,你最开始最小判到的矩阵边长为2


by ___HatsuneMiku___ @ 2024-02-07 12:58:54

谢谢,太tmd感谢了


|