View Code of Problem 182

#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
#include<ctype.h>
using namespace std;
int dp[101];
int a[101][101];
int dp1[101];
int num[5051];
int main()
{
	int n;
	cin >> n;
	for (int i = 0;i < n;i++)
	{
		for (int j = 0;j < n;j++)
		{
			cin >> a[i][j];
			//dp[i+1][j] = a[i][j]+dp[i][j];
		}
	}
	int max1 = -999;
	for (int i = 0;i < n;i++)
	{
		int z[101];
		memset(z, 0, sizeof(z));
		for (int j = i;j < n;j++)
		{
			for (int k = 0;k < n;k++)
			{
				z[k] += a[j][k];
				int pre;
				if (k == 0 && z[0] < 0)
				{
					z[0] = 0;
					dp[0] = z[0];
				}
				else
				{
					if (dp[k - 1] + z[k] > 0)
						dp[k] = max(dp[k - 1] + z[k], z[k]);
					else
						dp[k] = 0;
					if (dp[k] > max1)
						max1 = dp[k];
				}

			}
		}
	}
	
	
	cout << max1;
}

Double click to view unformatted code.


Back to problem 182