NYOJ 104 最大和

#include<iostream>
#include<cstdio>
#include<memory.h>
using namespace std;
int mat[101][101], temp[101], m, r,c;

void f(int *a)
{
    int i,sum = 0;
    for(i = 0; i < c; ++i)
    {
        if(sum > 0)
             sum += a[i];
        else sum = a[i];
        if(sum > m) m = sum;
    }
}

int main()
{
  // freopen("in.txt","r",stdin);
    int N,i,j,k;
    scanf("%d",&N);
    while(N--)
    {
        scanf("%d%d",&r,&c);
        for(i = 0; i < r; ++i)
            for(j = 0; j < c; ++j)
                scanf("%d",&mat[i][j]);
        m = mat[0][0];
        for(i = 0; i < r; ++i)
        {
            for(j = 0; j < c; ++j)
                temp[j] = 0;
            for(j = i; j < r; ++j)
            {
                for(k = 0; k < c; ++k)
                     temp[k] += mat[j][k];//把多维变成一维,遍历所有的可能
f(temp);//求最大值 } } printf("%d\n",m); } return 0; }

  

原文地址:https://www.cnblogs.com/yaling/p/3050023.html