hdu 1241

来源:互联网 发布:织物工艺设计软件 编辑:程序博客网 时间:2024/05/17 04:34

题意大致就是在一个矩阵中从从上下左右以及对角线八个方向找到最大的连续'@'

然后思路的话就直接各个点进行深搜,搜完一个点就用‘*’覆盖‘@’来避免重复搜索...

#include<iostream>using namespace std;int m,n;char s[110][110];int dr[8][2] = {{1,0},{-1,0},{1,1},{-1,-1},{0,1},{0,-1},{1,-1},{-1,1}};void dfs(int i, int j){int a,b;for (int x=0; x<8; x++){a = i + dr[x][0];b = j + dr[x][1];if (a>=0 && a<m && b>=0 && b<n && s[a][b]=='@'){s[a][b] = '*';dfs(a,b);}}}int main(){while (cin>>m>>n){int cnt = 0;if (m==0 || n==0)break;getchar();for (int i=0; i<m; i++){for (int j=0; j<n; j++){scanf("%c",&s[i][j]);}getchar();}for (int i=0; i<m; i++){for (int j=0; j<n; j++){if (s[i][j] == '@'){s[i][j] = '*';cnt++;dfs(i,j);}}}cout<<cnt<<endl;}}

0 0
原创粉丝点击