2 条题解

  • 0
    @ 2025-7-3 20:33:43
    #include<bits/stdc++.h>
    using namespace std;
    long long a[105][105],maxn=INT_MIN,n,s,x[200],y[200];
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cin>>a[i][j];
    			a[i][j]+=a[i-1][j]; 
    		}	
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=i;j++){
    			for(int k=1;k<=n;k++){
    				x[k]=a[i][k]-a[i-j][k];
    				y[k]=max(y[k-1]+x[k],x[k]);
    				maxn=max(maxn,y[k]);
    			}
    			
    		}
    	}
    	cout<<maxn;
    	return 0;
    }
    /*4 
    0 -2 -7 0 
    9 2 -6 2 
    -4 1 -4 1  
    -1 8 0 -2 
    
    0 -2 -7 0
    9 0 -13 2
    5 1 -17 3
    4 9 -17 1
    */
    
    • 0
      @ 2022-7-21 14:58:23

      提供一个 O(n3)O(n^3) 做法。

      #include <bits/stdc++.h>
      using namespace std;
      const int N = 105;
      int sum[N][N], f[N], a[N][N], n, ans;
      int main() {
      	cin >> n;
      	for (int i = 1; i <= n; i ++)
      		for (int j = 1; j <= n; j ++)
      			cin >> a[i][j], sum[i][j] = sum[i - 1][j] + a[i][j];
      	for (int i = 1; i <= n; i ++)
      		for (int j = 0; j < i; j ++) 
      			for (int k = 1; k <= n; k ++)
      				ans = max(ans, f[k] = max(f[k - 1], 0) + sum[i][k] - sum[j][k]);
      	cout << ans << '\n';
      	return 0;
      }
      
      • @ 2023-2-15 20:14:26

        <<O(n3)O(n^3)>>

    • 1

    信息

    ID
    48
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    155
    已通过
    54
    上传者