lucy2012 @ 2024-03-17 18:44:11
求调
#include<bits/stdc++.h>
using namespace std;
int sa[200][200],n,a,maxn;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&a);
sa[i][j]=sa[i-1][j]+sa[i][j-1]+a;
cout<<sa[i][j]<<' ';
}
cout<<endl;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==1&&j==1)
maxn=sa[1][1];
if(sa[i][j]>maxn)
maxn=sa[i][j];
}
}
cout<<maxn;
return 0;
}
by yh2022mayu @ 2024-03-17 19:06:18
首先,是子矩阵,不一定一(1,1)开头
by yh2022mayu @ 2024-03-17 19:10:37
所以要四重枚举
by lucy2012 @ 2024-03-17 19:33:12
@yh2022mayu
#include<bits/stdc++.h>
using namespace std;
int sa[200][200],n,a,maxn;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&a);
sa[i][j]=sa[i-1][j]+sa[i][j-1]-sa[i-1][j-1]+a;
}
cout<<endl;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=0;k<=i;k++){
for(int q=0;q<=j;q++){
if(i==1&&j==1&&k==0&&q==0)
maxn=sa[i][j]-sa[k][q];
if(sa[i][j]-sa[k][q]>maxn)
maxn=sa[i][j]-sa[k][q];
}
}
}
}
cout<<maxn;
return 0;
}
by yh2022mayu @ 2024-03-17 19:35:31
对的
by yh2022mayu @ 2024-03-17 19:36:01
(所以为什么11行要换行
by yh2022mayu @ 2024-03-17 19:46:35
#include<bits/stdc++.h>
using namespace std;
int sa[200][200],n,a,maxn;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&a);
sa[i][j]=sa[i-1][j]+sa[i][j-1]-sa[i-1][j-1]+a;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=0;k<i;k++){
for(int q=0;q<j;q++){
if(i==1&&j==1&&k==0&&q==0)
maxn=sa[i][j]+sa[k][q]-sa[i][q]-sa[k][j];
if(sa[i][j]+sa[k][q]-sa[i][q]-sa[k][j]>maxn)
maxn=sa[i][j]+sa[k][q]-sa[i][q]-sa[k][j];
}
}
}
}
cout<<maxn;
return 0;
}
by yh2022mayu @ 2024-03-17 19:54:51
@lucy2012
by lutaoquan2012 @ 2024-03-17 20:24:52
@lucy2012 你在11行为什么要换行,这不也是我前面说的调试代码么?
by lucy2012 @ 2024-03-18 18:00:40
@yh2022mayu @lutaoquan2012 。。。谢了