博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维数组
阅读量:5167 次
发布时间:2019-06-13

本文共 1014 字,大约阅读时间需要 3 分钟。

            dp = arr[i];

27         else
28             dp += arr[i];
29         if (dp < min)
30             min = dp;
31         sum += arr[i];
32     }
33     max2 = sum - min;//数组全部元素和减去最小子数组
34     return max1>max2 ? max1 : max2;//三目运算符;如果max1>max2,将max1的值返回,否则返回max2
35 }
36 int maxSubMatrix(int n, int m, int array[M][N])
37 {
38     int i, j, h, max, sum = -100000;
39     int b[100];
40     for (i = 0; i<n; i++)
41     {
42         memset(b, 0, sizeof(b));       //初始化b[] 
43         for (j = i; j<n; j++)          //把第i行到第j行相加,对每一次相加求出最大值 
44         {
45             for (h = 0; h<m; h++)
46             {
47                 b[h] += array[j][h];   //二维数组压缩成一维数组,然后求最大子序列和 
48             }
49             max = maxSubArray(b, h);
50
51             if (max>sum)
52                 sum = max;
53         }
54     }
55     return sum;
56 }
57 int main()
58 {
59     int arr[M][N];
60     cout << "随机二维数组为:" << endl;
61     srand(time(0));
62     for (int i = 0; i < M; i++)
63     {
64         for (int j = 0; j < N; j++)
65         {
66             arr[i][j] = rand() % 50 - 25;
67             cout << arr[i][j] << " ";
68         }
69         cout << endl;
70     }
71     cout <<"最大子数组的和:"<< maxSubMatrix(M, N, arr) << endl;
72     return 0;
73     }

将二位数组压成一个一位数组,然后利用一位数组求最大字数组方式求

转载于:https://www.cnblogs.com/masimian/p/4452563.html

你可能感兴趣的文章
LintCode刷题笔记-- Count1 binary
查看>>
java webcontroller访问时报415错误
查看>>
qcow2、raw、vmdk等镜像格式
查看>>
.NET:CLR via C# Assembly Loading
查看>>
CentOS安装rar及用法
查看>>
TYVJ-P1864 守卫者的挑战 题解
查看>>
Jzoj5455【NOIP2017提高A组冲刺11.6】拆网线
查看>>
特定字符序列的判断(1028)
查看>>
华为面试
查看>>
平衡二叉树(AVL Tree)
查看>>
【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
查看>>
【CF799E】Aquarium decoration 线段树
查看>>
大运飞天 鲲鹏展翅
查看>>
从ECMA到W3C
查看>>
软件工程--第十六周学习进度
查看>>
yii2 ActiveRecord多表关联以及多表关联搜索的实现
查看>>
搜狗输入法安装--ubuntu
查看>>
ps/2接口键盘的输入及显示
查看>>
Swift———a Glance(极客学院)笔记
查看>>
【poj3294-不小于k个字符串中最长公共子串】后缀数组
查看>>