zoukankan      html  css  js  c++  java
  • poj1050最大矩阵和——暴力枚举

    题目:http://poj.org/problem?id=1050

    s[i][j]数组记录以点(i,j)为右下角、(1,1)为左上角的子矩阵内部和;

    枚举子矩阵左上角和右下角,取最大值即可。

    代码如下:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int n,a[105][105],s[105][105],ans;
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    		{
    			scanf("%d",&a[i][j]);
    			s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
    		}
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			for(int k=i;k<=n;k++)
    				for(int l=j;l<=n;l++)
    					if(s[k][l]-s[i-1][l]-s[k][j-1]+s[i-1][j-1]>ans)
    						ans=s[k][l]-s[i-1][l]-s[k][j-1]+s[i-1][j-1];
    	printf("%d",ans);
    	return 0;
    }
    

      

  • 相关阅读:
    TCP的初始cwnd和ssthresh
    C/C++ main
    PHP Function
    run bin
    PHP
    LAMP
    PHP MATH
    PHP array sort
    inline
    gcc g++
  • 原文地址:https://www.cnblogs.com/Zinn/p/8457613.html
Copyright © 2011-2022 走看看