aizu/aoj-0118-Property Distribution

来源:互联网 发布:万德数据 编辑:程序博客网 时间:2024/06/05 06:24

题目描述(大意!)看到一串日文的我看了老半天才看懂

给一个H×W的图,找到有多少个连通的内容一样的块(?)。

输入:有多组数据,H、W、和一张图。H=W=0时结束。

输出:每一行输出块(?)的数量。


sample input

10 10####*****@@#@@@@#*#*@##***@@@*#****#*@**##@*#@@*##*@@@@*@@@#***#@*@##**@@@*@@##@*@*#*@##**@****#@@#@0 0

sample output

33


思路:dfs,然后对走过的点做标记。【这玩意是叫floodfill吗】

下为代码。

#include<cstdio>#include<cstring>int h,w,ans,b[105][105],dr[5]={0,1,0,-1,0};char a[105][105];void dfs(int x,int y,char c){if(x>h||y>w||x<0||y<0||a[x][y]!=c||b[x][y]) return;b[x][y]=ans;for(int i=1;i<=4;i++) dfs(x+dr[i-1],y+dr[i],c);}int main(){int i,j;while(1){scanf("%d%d",&h,&w);if(!h) break;for(i=1;i<=h;i++) scanf("%s",a[i]+1);memset(b,0,sizeof(b));ans=0;for(i=1;i<=h;i++)for(j=1;j<=w;j++)if(!b[i][j]) {ans++;dfs(i,j,a[i][j]);}printf("%d\n",ans);}}


题外话:

在AC之前,我CE过一次。

原因:提交的时候,没看语言,直到pending的时候我才发现........我交成了C语言......................................................

这个故事告诉我们,在OJ上交题是要看语言的...............




原创粉丝点击