题意 : 给你每个柿子树的位置,给你已知长宽的矩形,让这个矩形包含最多的柿子树。输出数目
思路 :数据不是很大,暴力一下就行,也可以用二维树状数组来做。
1 //2029 2 #include <stdio.h> 3 #include <string.h> 4 #include <iostream> 5 6 using namespace std ; 7 8 int mapp[110][110] ; 9 10 int main() 11 { 12 int N ,S,T ,W,H; 13 while(scanf("%d",&N) != EOF && N) 14 { 15 int x,y ; 16 memset(mapp,0,sizeof(mapp)) ; 17 scanf("%d %d",&W,&H) ; 18 for(int i = 0 ; i < N ; i++) 19 { 20 scanf("%d %d",&x,&y) ; 21 mapp[x][y] = 1 ; 22 } 23 scanf("%d %d",&S,&T) ; 24 for(int i = 1 ; i <= W ; i++) 25 for(int j = 1 ; j <= H ; j++) 26 mapp[i][j] += (mapp[i-1][j]+mapp[i][j-1]-mapp[i-1][j-1]) ; 27 int ans = -1 ; 28 for(int i = S ; i <= W ;i ++) 29 { 30 for(int j = T ; j <= H ; j++) 31 { 32 ans = max(ans,mapp[i][j]-mapp[i-S][j]-mapp[i][j-T]+mapp[i-S][j-T]) ; 33 } 34 } 35 printf("%d\n",ans) ; 36 } 37 return 0 ; 38 }