码迷,mamicode.com
首页 > 其他好文 > 详细

I - 红与黑

时间:2020-01-22 23:47:16      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:har   int   需要   思路   code   onclick   event   closed   else   

【题意】仅有两种颜色,红,黑两种瓷砖,我现在只能在相邻黑瓷砖上运动,并且我现在站在黑色瓷砖上,问能够到达好多快瓷砖。输入 0 0 是退出。

【思路】此题是bfs搜索,因为,提到了只能向相邻的黑色瓷砖运动,所以只需要记录我自己可以在队列中push多少次即可,最终答案加1哦,因为要算本身的

【代码】:

技术图片
#include<stdio.h>
#include<iostream>
#include<queue>
#include<string.h>
using namespace std;

int W,H;
char mp[21][21];
int vis[21][21];

int fx[4]={0,0,-1,1};
int fy[4]={-1,1,0,0};

struct node{
    int x,y;
}; 
int ans;
int x,y;
bool check(int x,int y){
    //printf("%d %d====\n",x,y);
    if(x<H&&x>=0&&y<W&&y>=0){//不能超过边界
        return 1;
    }
    else return 0;
}

int bfs(int x,int y){

    queue<node> q;
    q.push({x,y});
    while(q.size()){
        node now=q.front();
        q.pop();
        for(int i=0;i<4;i++){
            int nextx=now.x+fx[i];
            int nexty=now.y+fy[i];    
            if(check(nextx,nexty)&&!vis[nextx][nexty]&&mp[nextx][nexty]==.){
                ans++;//只管加就是
                //printf("%d %d---%d %d++++\n",nextx,nexty,ans,check(nextx,nexty));
                q.push({nextx,nexty}); 
                vis[nextx][nexty]=1;//走过的点标记,不在走就是
            }
        }
    }
    return ans;
}

int main(){
       ios_base::sync_with_stdio(false);
    cin.tie(0);
    int si,sj;//记录我现在的位置
    while(cin>>W>>H){
        ans=0;
        memset(vis,0,sizeof(vis));
        if(W==0&&H==0) break;
        for(int i=0;i<H;i++){
            for(int j=0;j<W;j++){
                cin>>mp[i][j];
                if(mp[i][j]==@){
                    si=i;
                    sj=j;
                }
            }
        }
        //printf("%d %d-----\n",si,sj);
        //bfs(si,sj);
        cout<<bfs(si,sj)+1<<"\n";
        
    }
    return 0;
}
View Code

此题很bfs,自己觉得没有太大难度,只是最后加1可能会忽略。

okk....

I - 红与黑

标签:har   int   需要   思路   code   onclick   event   closed   else   

原文地址:https://www.cnblogs.com/WGD943/p/12229866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!