广搜专题-1001
来源:互联网 发布:方正畅听软件 编辑:程序博客网 时间:2024/04/28 05:19
1001
时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte
总提交: 23 测试通过: 7
总提交: 23 测试通过: 7
描述
输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块。如图所示的图形有3个八连块。
输入
第1行输入一个正整数n(n≤700),此后输入n行,每行是由n个0或1组成的字符串。
输出
在输入黑白图像中,八连块的个数
样例输入
6100100001010000000110000111000010100
样例输出
3
这题乍一看深搜,可是用深搜提示的是RE,不知为什么 ?
深搜不行就广搜吧;
代码:
#include<cstdio>#include<cstring>#include<queue>using namespace std;char maze[701][701];int dir[][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};int N;struct Point{int x,y;};void bfs(int i,int j){ queue<Point> p;Point q,t; q.x=i;q.y=j;p.push(q);while(!p.empty()){ q=p.front(); p.pop(); for(int k=0;k<8;k++) { t.x=q.x+dir[k][0]; t.y=q.y+dir[k][1]; if(t.x>=0&&t.x<N&&t.y>=0&&t.y<N&&maze[t.x][t.y]=='1') { maze[t.x][t.y]='0';p.push(t); } }}}int main(){while(~scanf("%d",&N)&&N){int ans=0;for(int i=0;i<N;i++) scanf("%s",maze[i]); for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { if(maze[i][j]=='1') { ans++; bfs(i,j); } } } printf("%d\n",ans);}}
0 0
- 广搜专题-1001
- 广搜专题-1002
- 广搜
- 广搜
- 广搜
- 广搜
- 广搜
- 广搜
- POJ_3278_广搜
- 深搜 广搜
- hdu 1026 广搜
- 1242 rescue 广搜
- zoj 1091 广搜。
- POJ3083 广搜&模拟
- poj3278基本广搜
- POJ3414广搜&回溯
- nysit 20 广搜
- 双向广搜
- Sort List
- C语言输入下标数,把下标值改成0并放到最后,再依次打印。
- 普里姆算法
- 关于ios的UIwindows and UIviewcontroller
- CGlib-打造无入侵的类代理
- 广搜专题-1001
- ubuntu下svn创建多个仓库
- Longest Valid Parentheses
- autoi java实现
- cocos2d-x3.2 在Windows下打包Android平台APK
- [LeetCode]Merge Two Sorted Lists
- 网络带宽不足引起arc进程争用导致两个standby失败
- VIM常用命令
- Xcode中添加pch文件