hdu1181 变形课

来源:互联网 发布:鼠标对码软件 编辑:程序博客网 时间:2024/06/11 05:13

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1181

题意:balabala一大堆,就是问你,你能不能找到几个连起来的字符,开头是B结尾是M;

思路:看很多人用dfs,我用bfs写了下,感觉还可以,虽然题目很水,但是发现了一些问题。

坑点:1.要输入多组数据

    2。尽量用scanf printf

            3.bfs里的visit尽量不要省略,否则容易超时。

代码:

#include <iostream>#include <cstdio>#include <queue>#include <string>using namespace std;struct node{    int x;    int y;    int visit;}point[1000];int i;void bfs(){    queue<node>q;    node start;    node temp;    start.x=0;    start.y=1;    q.push(start);    while(!q.empty()){        temp=q.front();q.pop();        for(int j=0;j<i;j++){            if(point[j].x==temp.y&&point[j].y==12){                printf("Yes.\n");                return ;            }            if(point[j].x==temp.y&&point[j].visit==0){                q.push(point[j]);                point[j].visit=1;            }        }    }    printf("No.\n");    return ;}int main(){    string s;    i=0;    while(cin>>s){        if(s[0]=='0'){            bfs();            i=0;            continue;        }        point[i].x=s[0]-'a'; point[i].visit=0;        point[i++].y=s[s.size()-1]-'a';    }}

0 0
原创粉丝点击