sjtu oj 1002.二哥种花生
2014-02-21 22:18
393 查看
#include <iostream> #include <stdio.h> using namespace std; int a[1000][1000],b[1000]; int main() { int L,W,i,j,k,l,w,s,t,sum=0,res=0,diff; scanf("%d%d",&L,&W); for(i=0;i<L;i++) for(j=0;j<W;j++) scanf("%d",&a[i][j]); scanf("%d%d",&l,&w); if(l<w) { for(k=0;k<=L-l;k++) { for(j=0;j<=W-w;j++) { if(k==0&&j==0) { sum=0; for(s=0;s<l;s++) for(t=0;t<w;t++) sum+=a[s][t]; b[k]=sum; if(sum>res) res=sum; } else if(j==0) { sum=b[k-1]; diff=0; for(i=0;i<w;i++) diff+=a[k+l-1][i]-a[k-1][i]; sum+=diff; b[k]=sum; if(sum>res) res=sum; } else { diff=0; for(i=k;i<k+l;i++) diff+=a[i][j+w-1]-a[i][j-1]; sum+=diff; if(sum>res) res=sum; } } } } else { for(j=0;j<=W-w;j++) { for(k=0;k<=L-l;k++) { if(k==0&&j==0) { sum=0; for(s=0;s<l;s++) for(t=0;t<w;t++) sum+=a[s][t]; b[j]=sum; if(sum>res) res=sum; } else if(k==0) { sum=b[j-1]; diff=0; for(i=0;i<l;i++) diff+=a[i][j+w-1]-a[i][j-1]; sum+=diff; b[j]=sum; if(sum>res) res=sum; } else { diff=0; for(i=j;i<j+w;i++) diff+=a[k+l-1][i]-a[k-1][i]; sum+=diff; if(sum>res) res=sum; } } } } printf("%d",res); return 0; }
相关文章推荐
- [转载]Winform等待窗口的实现(附源代码)
- Nginx常用命令
- 计算机启动过程
- 浅谈iOS与社交化网络
- Java反射机制 笔记
- Java Simple Introduce
- android颜色对应的xml配置值,颜色表
- sth about Hadoop
- java+mysql中文乱码问题
- 发布应用程序
- lua工具库penlight--02表和数组
- STL -- map--vector--排序
- 强制产生死锁的进程结束,产生core文件
- 观察者模式
- ZJU 3686 线段树
- 2014022101
- Linux控制台汉化Fbterm和Yong .
- WinCE5.0中文模拟器SDK(VS2005)的配置
- XAML学习笔记
- Codeforces 394C. Dominoes