jason


私信TA

用户名:yisj0323

访问量:7939

签 名:

c++题刷起来

等  级
排  名 217
经  验 6353
参赛次数 18
文章发表 67
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

我喜欢用”a,b,c,d,i,j,k,l,x,y“大家请习惯。

解题思路:

1.s[][]为和第二个循环为来赋s的初值。
2.第三个循环来算x与mx判断哪个大
3.输出


注意事项:

要定义mx和x
i2,i1,j1,j2 不要弄混


参考代码:

#include<bits/stdc++.h>
using namespace std;
long long a[101][101],s[101][101],n;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) cin>>a[i][j];
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++) s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
	}
	long long mx=a[1][1];
	for(int i1=1;i1<=n;i1++){
		for(int j1=1;j1<=n;j1++){
			for(int i2=i1;i2<=n;i2++){
				for(int j2=j1;j2<=n;j2++) {
					long long x=s[i2][j2]-s[i2][j1-1]-s[i1-1][j2]+s[i1-1][j1-1];
					if(x>mx) mx=x;
				}
			}
		}
	}
	cout<<mx;
	return 0;		
}


 

0.0分

2 人评分

  评论区

  • «
  • »