hud4517小小明系列故事——游戏的烦恼

阅读: 评论:0

hud4517小小明系列故事——游戏的烦恼

hud4517小小明系列故事——游戏的烦恼

小小明系列故事——游戏的烦恼

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 816    Accepted Submission(s): 289


Problem Description 小小明最近在玩一款游戏,它由n*m大小的矩阵构成,矩阵上会随机产生一些黑色的点,这些点它们可能会连在一起也可能会分开,这些点的个数没有限制,但是每个1*1方格中最多只可能有一个黑点产生。游戏要求玩家以最短的时间用x*y的小矩阵覆盖这个大矩阵,覆盖的要求有以下2点:
  1. x*y大小的小矩阵内必须有x*y个黑点。
  2. 多个小矩阵可以重叠,但是每个小矩阵放置的位置必须是独一无二的,即不同的小矩阵内的黑点不能完全相同。例如1*2的矩阵可以横着放,也可以竖着放,这两种方法是不同的,即使它们可能共用黑点。
  小小明是个粗心的孩子,他尝试了很多遍都无法将所有的符合要求的小矩阵找到,聪明的你,能不能告诉烦恼中的小小明这个大矩阵里有多少个满足要求的小矩阵呢?
Input 题目有多组测试数据(不多于100个);
每组测试数据的第一行包含2个正整数n和m,然后第二行是x和y(n,m,x,y的意思如题),接下来n行,每行m个字符,其中’ * ’表示黑点,’ . ’表示空白。
n和m为0则结束输入。

[Technical Specification]
0 < n, m <= 2000
0 < x, y <= 1000

Output 请计算并输出一共有多少个满足要求的小矩阵,每组输出占一行。
Sample Input
  2 3
1 2
**.
.**
0 0

Sample Output
  3

Source 2013腾讯编程马拉松初赛第三场(3月23日)   不得不说自己弱。 这其实就是一道动归,只不过要优化成一维的。也可说是一道规律题。 代码贴上自己看看吧!
#include<stdio.h>
#include<string.h>
int map[2005][2005],l[2005],l2[2005],h[2005];
int main()
{int n,m,i,j,ans,x,y;char c;while(scanf("%d %d",&n,&m)&&n!=0){ans=0;scanf("%d %d",&x,&y);getchar();memset(h,0,sizeof h);memset(l,0,sizeof l);memset(l2,0,sizeof l2);for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%c",&c);if(c=='*')map[i][j]=1;elsemap[i][j]=0;}getchar();}for(i=1;i<=n;i++)for(j=1;j<=m;j++){if(map[i][j]==1){h[j]++;if(h[j]>=x)l[j]=l[j-1]+1;elsel[j]=0;if(h[j]>=y)l2[j]=l2[j-1]+1;if(h[j]>=x&&l[j]>=y)ans++;if(h[j]>=y&&l2[j]>=x&&x!=y)ans++;}elseh[j]=l[j]=l2[j]=0;}printf("%dn",ans);}return 0;
}

本文发布于:2024-02-04 15:56:14,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170711058356868.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:小明   烦恼   故事   系列   游戏
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23