最长连续子串和的扩展到二维的情况,同理可以扩展到更多维的情况。
#include <stdio.h>
#include <string.h>
int main()
{
int N = 0;
scanf("%d", &N);
int rect[100][100] = {0};
for (int i = 0; i < N * N; i++)
{
scanf("%d", &(rect[i / N][i % N]));
}
int sum[100][100] = {0};
int max = 0;
for (int i = 0; i < N - 1; i++)
{
for (int j = i; j < N; j++)
{
int temp[100] = {0};
memset(temp, 0, 100 * sizeof(int));
for (int k = 0; k < N; k++)
{
for (int p = i; p <= j; p++)
{
temp[k] += rect[p][k];
}
if (i == 0 && j == 0)
{
max = temp[k];
}
else
{
if (temp[k - 1] + temp[k] > temp[k])
{
temp[k] += temp[k - 1];
}
if (max < temp[k])
{
max = temp[k];
}
}
}
}
}
printf("%d\n", max);
return 0;
}