| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:一遍过,太感动了In Reply To:一遍过,太感动了 Posted by:shenhaomin at 2021-07-03 11:27:55 #include <iostream>
#include <cstring>
using namespace std;
int n,flag;
int fun(int w[128])
{
int i;
int dp[128];
dp[0]=w[0];
int MAX=dp[0],p=1;
for(i=1;i<n;i++)
{
if(dp[i-1]+w[i]>w[i])
{
dp[i]=dp[i-1]+w[i];
p++;
}
else
dp[i]=w[i];
if(dp[i]>MAX)
MAX=dp[i];
}
if(flag&&p==n)
{
if(w[0]<w[n-1])
MAX-=w[0];
else
MAX-=w[n-1];
}
return MAX;
}
int main()
{
int a[128][128];
int total[128][128];
int w[128];
int i,j,ans;
while(cin>>n)
{
ans=flag=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cin>>a[i][j];
total[i][j]=a[i][j];
}
for(i=1;i<n;i++)
for(j=0;j<n;j++)
total[i][j]+=total[i-1][j];
for(i=0;i<n;i++)
{
for(j=i,flag=0;j<n;j++)
{
if(i==0&&j==n-1)
flag=1;
for(int t=0;t<n;t++)
{
if(i==0)
w[t]=total[j][t];
else
w[t]=total[j][t]-total[i-1][t];
}
int ansl=fun(w);
if(ansl>ans)
ans=ansl;
}
}
cout<<ans<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator