zoukankan      html  css  js  c++  java
  • hdoj 1081 To The Max

    参考博客:http://blog.csdn.net/acm_davidcn/article/details/5834454

    d[i][j]表示到第i行的所有的同一列的和,3个for循环,时间复杂度O(n^3),表示从第i行到第j行 求从第1列到第n列 连续的最大值。

    ac代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 int d[110][110];
     4 int main()
     5 {
     6     int n,i,j,max,k,sum,t;
     7     while(~scanf("%d",&n))
     8     {
     9         memset(d,0,sizeof(d));
    10 
    11         for(i=1; i<=n; i++)
    12         for(j=1; j<=n; j++)
    13         {
    14             scanf("%d",&d[i][j]);
    15             d[i][j]+=d[i-1][j];
    16         }
    17         max=d[1][1];
    18 
    19         for(i=1; i<=n; i++)
    20         for(j=i; j<=n; j++)
    21         {
    22             sum=0;
    23             for(k=1; k<=n; k++)
    24             {
    25                 t=d[j][k]-d[i-1][k];
    26                 sum+=t;
    27 
    28                 if(sum>=max)
    29                 max=sum;
    30 
    31                if(sum<0)
    32                sum=0;
    33             }
    34         }
    35 
    36         printf("%d\n",max);
    37     }
    38 }

    再贴上我之前自己写的O(n^4)的代码(不知道为么,杭电上对了,sdut上没对)

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 const int INF=-1<<29;
     5 int main()
     6 {
     7     int n,i,j,k,l,d[110][110],a[110],max1,max2,dp[110];
     8     while(~scanf("%d",&n))
     9     {
    10         max2=INF;
    11         for(i=0; i<n; i++)
    12             for(j=0; j<n; j++)
    13                 scanf("%d",&d[i][j]);
    14 
    15         for(i=0; i<n; i++)
    16             for(j=i; j<n; j++)
    17             {
    18                 memset(a,0,sizeof(a));
    19                 memset(dp,0,sizeof(dp));
    20                 for(k=0; k<n; k++)
    21                 {
    22                     for(l=i; l<=j; l++)
    23                     {
    24                         a[k]+=d[l][k];
    25                     }
    26                     if(k==0)
    27                         {dp[0]=a[0]; max1=dp[0];}
    28                     else
    29                     {
    30                         if(dp[k-1]>0)  dp[k]=a[k]+dp[k-1];
    31                         else dp[k]=a[k];
    32                     }
    33                     if(dp[k]>max1)
    34                     max1=dp[k];
    35                 }
    36                 if(max1>max2)
    37                 max2=max1;
    38             }
    39             printf("%d\n",max2);
    40     }
    41 }
  • 相关阅读:
    rsync介绍和配置自动同步
    haproxy 配置httpd和httpds负载均衡
    haproxy配置及使用
    lvs之搭建NAT模式的HTTPS负载集群
    lvs配置之DR模式
    lvs配置之NAT模式
    LVS集群
    lvs四种工作模式,负载调度的介绍
    zabbix页面介绍
    zabbix自定义监控进程、日志、mysql主从
  • 原文地址:https://www.cnblogs.com/bfshm/p/3125071.html
Copyright © 2011-2022 走看看