POJ 1979 :Red and Black 搜索

来源:互联网 发布:软件系统的作用 编辑:程序博客网 时间:2024/06/06 20:12

题意:给你一个row*col的矩阵,上面的'#'代表你不能走的地方,'.'表示你能走的地方,'@'表示你的起点,问你最多能走多少格。

还是求连到一起的方块。。。但是一开始输入写反了,旋转了90度(之前已经犯过一次这种错误了。。。),WA了好久。

#include <iostream>#include <string.h>#include <stdio.h>#include <math.h>#include <map>#include<queue>using namespace std;int xa,ya;bool isok[105][105];int cnt;void dfs(int x,int y){    if((!isok[x][y])||x<0||y<0||x>=ya||y>=xa)        return;    isok[x][y]=false;    dfs(x+1,y);    dfs(x,y+1);    dfs(x,y-1);    dfs(x-1,y);    cnt++;}int main(){    while(cin>>xa>>ya)    {        int posx,posy;        if(!(xa||ya))            break;        cnt=0;        for(int i=0;i<ya;i++)        {            char c;            for(int j=0;j<xa;j++)            {                cin>>c;                if(c=='.')                    isok[i][j]=true;                else if(c=='#') isok[i][j]=false;                else if(c=='@') posx=i,posy=j,isok[i][j]=true;            }        }        dfs(posx,posy);        cout<<cnt<<endl;    }}


0 0
原创粉丝点击