1. 程式人生 > >返回二維數組最大子數組的和

返回二維數組最大子數組的和

light printf pre max print 技術 bar pri matrix


程序代碼:
#include<stdio.h> #define M 5 #define N 4 int maxSubArray(int arr[], int len) { int i, sum = arr[0], b = 0; for (i = 0; i<len; ++i) { if (b>0) b += arr[i]; else b = arr[i]; if (b>sum) sum = b; } return sum; } int maxSubMatrix(int n, int m, int array[M][N]) { int i, j, h, max, sum = -100000; int b[100]; for (i = 0; i < n; i++) { memset(b, 0, sizeof(b)); for (j = i; j < n; j++) { for (h = 0; h<m; h++) { b[h] += array[j][h]; } max = maxSubArray(b, h); if (max>sum) sum = max; } } return sum; } int main() { int arr[M][N] ; printf("隨機產生二維數組為\n"); srand(time(0)); int i,j; for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { arr[i][j] = rand() % 100-50; printf("%d ",arr[i][j] ); } printf("\n"); } printf("最大子數組和為:%d\n",maxSubMatrix(M, N, arr)); system("pause"); return 0; }

  運行結果:

技術分享圖片

工作照片:

技術分享圖片

返回二維數組最大子數組的和