首页 > 代码库 > POJ 1979 Red and Black

POJ 1979 Red and Black

题目链接:http://poj.org/problem?id=1979

 

思路:典型的搜索题,个人感觉广搜深搜皆可以,我用深搜做的。

 

代码:

  

#include <iostream>using namespace std;int startx,starty;//开始的位置 int n,m;//行数和列数 char e[21][21];//地图 int sum;//储存结果 int dfs(int step,int i,int j){    if(e[i][j]==#)        return 0;    if(i>m||i<1||j>n||j<1)        return 0;    sum++;    e[i][j] = #;    dfs(step+1,i+1,j);    dfs(step+1,i-1,j);    dfs(step+1,i,j-1);    dfs(step+1,i,j+1);    return 1;}int main(){        //    freopen("data.txt","r",stdin);    while(cin>>n>>m&&n+m)    {                sum = 0;                for(int i=1;i<=m;i++)        {            for(int j = 1; j<=n;j++)            {                cin>>e[i][j];                if(e[i][j]==@)                {                    startx = i;                    starty = j;                }            }        }                dfs(1,startx,starty);                cout<<sum<<endl;            }                        return 0;}