CCabbage


私信TA

用户名:CCabbage

访问量:944

签 名:

等  级
排  名 14055
经  验 843
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

地宫取宝 -- DP
浏览:38
前缀和思想
浏览:98

注意事项:
    

if(ans < 0) ans = 0; 
//当ans<0时,如果继续包括前边子矩阵,结果肯定是减小的,所以直接舍弃前边子矩阵


参考代码:

#include
using namespace std;
const int N = 510; 
int n,m;
int sum = INT_MIN;     // 答案最初设置一个极小值
int mp[N][N];
int main(){
    cin >> n >> m;
    for(int i = 1; i <= n; i ++){
        for(int j = 1; j <= m; j ++){
            int t;cin >> t;
            mp[i][j] = mp[i-1][j] + t;        //按列求和
        }
    }
    for(int i = 1; i <= n; i ++){
        for(int j = i; j <= n; j ++){            // i,j限制子矩阵的行
            int ans = 0;
            for(int k = 1; k <= m; k ++){        // k 限制子矩阵的列
                ans += mp[j][k] - mp[i-1][k];
                if(ans > sum) sum = ans;
                if(ans < 0) ans = 0;     
            }
        }
    }
    cout << sum;
    return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区