Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8236
  • 博文数量: 3
  • 博客积分: 127
  • 博客等级: 入伍新兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-25 20:05
文章分类
文章存档

2011年(1)

2009年(2)

我的朋友
最近访客

分类: C/C++

2009-05-25 20:16:02

转自

一道简单的动态规划题

#include <stdio.h>
#include <stdlib.h>
int G[101][101]={0};
int res1[101][101]={0};
int n;
int res=0;
int main(){
     int i,j,k,m;
     scanf("%d",&n);
     for(i=1;i<=n;i++){
     for(j=1;j<=n;j++){
     scanf("%d",&G[i][j]);
     res1[i][j]=res1[i][j-1]+G[i][j];
     }
     }
     for(i=1;i<=n;i++){
     for(j=1;j<=n;j++)
     res1[i][j]+=res1[i-1][j];
     }
     for(i=1;i<=n;i++){
     for(j=1;j<=n;j++){
     if(res1[i][j] > res) res = res1[i][j];
     for(k=0;k<=i;k++){
         for(m=0;m<=j;m++){
             if(k==i&&m==j) continue;
             int t=res1[i][j] - res1[k][j] - res1[i][m] + res1[k][m];
             if(t>res) res=t;
         }
     }
     }
     }
     printf("%d\n",res);
     return 0;
}

阅读(750) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~