1.題目連結。題目的大意就是給定一個矩陣,求出這個矩陣中的一個和最大的子矩陣。
#include<bits/stdc++.h>
using namespace std;
int t[101][101], dp[101];
#pragma warning(disable:4996)
int main() {
int n;
while (scanf("%d", &n) != EOF && n != 0)
{
int ans = -0xFFFFFFF, tmp;
memset(t, 0, sizeof(t));
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
scanf("%d", &tmp);
t[j][i] = t[j][i - 1] + tmp;//預處理一下資料
}
}
for (int i = 0; i <= n - 1; i++) {
for (int j = i + 1; j <= n; j++) {
memset(dp, 0, sizeof(dp));
for (int k = 1; k <= n; k++)
{
dp[k] = max(dp[k - 1] + t[k][j] - t[k][i], t[k][j] - t[k][i]);
ans = max(ans, dp[k]);
}
}
}
printf("%d\n", ans);
}
return 0;
}