http://acm.hdu.edu.cn/showproblem.php?pid=1081

求子矩阵最大的和

二维转一维

View Code
 1 #include <cstdio>
 2 using namespace std;
 3 
 4 const int N=110;
 5 int a[N][N],s[N][N];
 6 int f[N];
 7 int main()
 8 {
 9     int n;
10     while(~scanf("%d",&n))
11     {
12         for(int i=1;i<=n;i++)
13             for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);
14         for(int i=1;i<=n;i++)
15         {
16             s[i][0]=0;
17             for(int j=1;j<=n;j++) s[i][j]=s[i][j-1]+a[i][j];
18         }
19         int ans=-10000000;
20         for(int i=0;i<n;i++)
21             for(int j=i+1;j<=n;j++)
22             {
23                 int sum=0;
24                 for(int k=1;k<=n;k++)
25                 {
26                     sum+=s[k][j]-s[k][i];
27                     if(sum>ans) ans=sum;
28                     if(sum<0) sum=0;
29                 }
30             }
31         printf("%d\n",ans);
32     }
33     return 0;
34 }

 

相关文章:

  • 2022-12-23
  • 2022-02-23
  • 2021-11-13
  • 2021-10-23
  • 2022-01-25
  • 2021-08-02
  • 2021-08-02
  • 2021-12-13
猜你喜欢
  • 2021-08-07
  • 2021-11-26
  • 2021-07-02
  • 2022-12-23
  • 2021-07-01
相关资源
相似解决方案