最大子矩阵和 submatrix with maximum sum

来源:互联网 发布:2018年网络有线电视 编辑:程序博客网 时间:2024/05/22 05:02
#include <iostream>#define ROWS 4#define COLS 4int maxSubSeq(int* a, int n){int maxSum = 0;int curSum = 0;for(int i = 0; i < n; i++){curSum += a[i];if(curSum > maxSum)maxSum = curSum;if(curSum < 0)curSum = 0;}return maxSum;};int maxSumMatrix(int mat[ROWS][COLS], int col, int row){//initial new matrixfor(int i = 1; i < col; i++){for(int j = 0; j < row; j++){mat[j][i] += mat[j][i - 1];}}int maxSum = 0;for(int i = 0; i < col; i++){for(int j = -1; j < i; j++){int* a = (int*)malloc(sizeof(int) * row);for(int k = 0; k < row; k++){if(j == -1){a[k] = mat[k][i];}else{a[k] = mat[k][i] - mat[k][j];}}int curSum = maxSubSeq(a, row); if(curSum > maxSum){maxSum = curSum;}free(a);}}return maxSum;};int main(){int mat[4][4] = {{ 0, -2, -7,  0},{ 9,  2, -6,  2},{-4,  1, -4,  1},{-1,  8,  0, -2}};int res = maxSumMatrix(mat, 4, 4);std::cout << res;return 0;}

原创粉丝点击