poj 1562 Oil Deposits(搜索,种子填充法)

来源:互联网 发布:淘宝新用户有什么优惠 编辑:程序博客网 时间:2024/04/29 10:46
简单的一道搜索题,可DFS可BFS 主要利用的搜索本身扩散的性质
一次搜素“一块”,并把搜索过的全部标记,只要记录下调用了多少次搜索即可
PASS: 题目中最后一组数据在数字后面多一个空格,我一开始用的是scanf %c读取数据,结果导致后面的char型信息全部读乱了,但不影响提交的结果。就是纠结了好长时间。。。。

用cin读取时不会读取空格。
scanf %s也不会读空格
#include<cstdio>#include<cstring>#include<queue>#include<iostream>using namespace std;int n,m;const int Maxsize = 105;int maze[Maxsize][Maxsize];int dir[8][2]={{1,1},{1,-1},{-1,1},{-1,-1},{1,0},{-1,0},{0,-1},{0,1}};typedef struct{    int x,y;}node;int main(){    void bfs(node start);    char ch;    int cnt;    node start;    while(scanf("%d %d",&n,&m) && n && m)    {        cnt = 0;        memset(maze,0,sizeof(maze));        for(int i = 0 ; i < n ; i ++)        {            getchar();            for(int j = 0 ; j < m ; j++)            {                cin>>ch;                if(ch == '*')           //记录矩阵的信息。                {                    maze[i][j] = 1;                }            }        }        for(int i = 0 ; i < n ; i++)        {            for(int j = 0 ; j < m ; j++)            {                if(!maze[i][j])                {                    start.x = i;start.y = j; //每出现一次可以搜索的点,用bfs对其八个方向进行全搜索                    maze[i][j] = 1;//对矩阵的信息进行修改,一次可使“一块”搜索修改完毕                    bfs(start);                    cnt++;                }            }        }        printf("%d\n",cnt);    }    return 0;}void bfs(node start){    node pre,cur;    pre = start;    queue<node>q;    q.push(pre);    while(!q.empty())    {        pre = q.front();        q.pop();        for(int i = 0 ; i < 8 ; i++)        {            cur.x = pre.x + dir[i][0];            cur.y = pre.y + dir[i][1];            if(maze[cur.x][cur.y])continue;            if(cur.x < 0 || cur.x >=n || cur.y < 0 || cur.y >= m)continue;            maze[cur.x][cur.y] = 1;            q.push(cur);        }    }}



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开服装店批发服装的吊牌怎么办 天虹的鞋一天就坏了怎么办 车被钥匙划了露底漆了怎么办 数控铣z轴回不了参考点怎么办 白色衣服被黑色衣服染了怎么办 夏天出汗衣服粘身上都是毛毛怎么办 支付宝租的手机坏了怎么办 新买的衣服布料扎人怎么办 洗衣服的时候卫生纸沾裤子上怎么办 洗衣服给白衣服染上色了怎么办 不小心喝了游泳池的水怎么办 铁水中硅的含量高了怎么办 视频拍摄单人变双人是怎么办的 四季青进来的货比淘宝还贵怎么办 淘宝还没收货价格买贵了怎么办 在微信上赌博庄跑了怎么办 微信赌博输了10000多怎么办 欠了信用卡说来来家里调查怎么办 没用过的超市购物卡丢了怎么办 体验服抢号成功手机号填错了怎么办 起亚kx3一键启动钥匙没电怎么办 逆战下载的时候显示文件损坏怎么办 移动公司买手机送话费套路怎么办 开通京东白条身份信息被占用怎么办 丰巢快递柜把东西寄丢了怎么办? 圆通快递把我寄的东西弄丢了怎么办 快递把我寄出去的东西弄丢了怎么办 京东被盗刷都是到付怎么办 订机票时护照号错了怎么办 请问网上不小心点了扣话费了怎么办 不小心被中国移动扣了话费怎么办 京东买东西已经付款了说无货怎么办 不小心提交了两次中信信用卡怎么办 淘宝买东西扣了银行卡两次钱怎么办 拼多多同一个订单支付了两次怎么办 京东手机号服务密码忘记了怎么办 京东买的东西转手给别人保修怎么办 改了无线网密码还是上不去网怎么办 买的京东e卡丢了怎么办 已认证未抵扣的发票发生退货怎么办 办的消费卡不给退怎么办