[关闭]
@fuheimao 2017-07-22T11:22:30.000000Z 字数 1204 阅读 27

在此处输入标题

未分类


在此输入正文

  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. int n;
  5. int a[101][101];
  6. int ss[101][101];//ss[i][j]表示第i列前j个的前缀和
  7. int k[101],s[101];
  8. int b[101][101];
  9. int main()
  10. {
  11. cin>>n;
  12. memset(b,0x3f,sizeof(b));
  13. for(int i=1;i<=n;i++)
  14. for(int j=1;j<=n;j++)
  15. cin>>a[i][j];
  16. for(int i=1;i<=n;i++)
  17. ss[i][1]=a[1][i];
  18. for(int i=1;i<=n;i++)
  19. for(int j=2;j<=n;j++)
  20. ss[i][j]=ss[i][j-1]+a[j][i];
  21. for(int i=1;i<=n;i++)
  22. for(int j=1;j<=i;j++)
  23. {
  24. for(int p=1;p<=n;p++)
  25. {k[p]=ss[p][i]-ss[p][j-1];
  26. }
  27. s[1]=k[1];
  28. for(int p=2;p<=n;p++)
  29. {s[p]=max(0,s[p-1])+k[p];
  30. }
  31. for(int p=1;p<=n;p++)
  32. if(b[i][p]>s[p])
  33. b[i][p]=s[p];
  34. }
  35. int maxn=0;
  36. for(int i=1;i<=n;i++)
  37. for(int j=1;j<=n;j++)
  38. maxn=maxn>b[i][j]?maxn:b[i][j];
  39. cout<<maxn;
  40. }
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. int n;
  5. int a[101][101];
  6. int ss[101][101];//ss[i][j]表示第i列前j个的前缀和
  7. int k[101],s[101];
  8. //int b[101][101];
  9. int main()
  10. {
  11. cin>>n;
  12. //memset(b,0x3f,sizeof(b));
  13. for(int i=1;i<=n;i++)
  14. for(int j=1;j<=n;j++)
  15. cin>>a[i][j];
  16. //for(int i=1;i<=n;i++)
  17. // ss[i][1]=a[1][i];
  18. int maxn=0;
  19. for(int i=1;i<=n;i++)
  20. for(int j=1;j<=n;j++)
  21. ss[i][j]=ss[i][j-1]+a[j][i];
  22. for(int i=1;i<=n;i++)
  23. for(int j=1;j<=i;j++)
  24. {
  25. for(int p=1;p<=n;p++)
  26. {k[p]=ss[p][i]-ss[p][j-1];
  27. }
  28. s[1]=k[1];
  29. for(int p=2;p<=n;p++)
  30. {s[p]=max(0,s[p-1])+k[p];
  31. }
  32. for(int p=1;p<=n;p++)
  33. maxn=max(s[p],maxn);
  34. }
  35. cout<<maxn;
  36. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注