【解题报告】 POJ1050 To the Max
发布时间:2020-12-16 09:19:26 所属栏目:百科 来源:网络整理
导读:【解题报告】 POJ1050 To the Max 题目:最大的和(已翻译) 题意简述: 就是一个矩阵中找一个和最大的子矩阵 解题思路: 贪心,我们可以首先在输入的时候贪一遍心,然后我们可以一行一行地贪心,最终得到最后的正确结果 AC代码 #include iostream#include c
【解题报告】 POJ1050 To the Max题目:最大的和(已翻译)题意简述:就是一个矩阵中找一个和最大的子矩阵 解题思路:贪心,我们可以首先在输入的时候贪一遍心,然后我们可以一行一行地贪心,最终得到最后的正确结果 AC代码 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int maxn=105; int n; int a[maxn][maxn],s[maxn][maxn]; int ans=-0x3f,nans; bool check=false; int max(int a,int b) { return a>b? a:b; } int main() { cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>a[i][j]; if(a[i][j]>=0) check=true; ans=max(ans,a[i][j]); } } if(!check) { cout<<ans<<endl; return 0; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) s[i][j]=s[i-1][j]+a[i][j]; } for(int i=1;i<=n;i++) { for(int j=i;j<=n;j++) { nans=0; for(int k=1;k<=n;k++) { nans+=s[j][k]-s[i-1][k]; if(nans<0) nans=0; if(nans>ans) ans=nans; } } } cout<<ans<<endl; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |