当前位置:编程学习 > C/C++ >>

HDU-2717-Catch That Cow

HDU-2717-Catch That Cow

基本的BFS,朝3个方向搜索即可


[cpp] 
#include<iostream> 
#include<cstdio> 
#include<cstring> 
#include<cstdlib> 
#include<queue> 
using namespace std; 
int n,k; 
char visit[100005]; 
struct node 

    int x; 
    int time; 
}; 
int go(int x) 

    if(0<=x&&x<=100000) 
    return 1; 
    return 0; 

void bfs(int n,int k) 

    queue<node>q; 
    node st,ed; 
    memset(visit,0,sizeof(visit)); 
    visit[n]=1; 
    st.x=n; 
    st.time=0; 
    q.push(st); 
    while(!q.empty()) 
    { 
        st=q.front(); 
        q.pop(); 
        if(st.x==k) 
        { 
            printf("%d\n",st.time); 
            return; 
        } 
        if(go(2*st.x)&&!visit[2*st.x])   
        { 
            ed.x=2*st.x; 
            ed.time=st.time+1; 
            visit[ed.x]=1; 
            q.push(ed); 
        } 
        if(go(st.x-1)&&!visit[st.x-1]) 
        { 
            ed.x=st.x-1; 
            ed.time=st.time+1; 
            visit[ed.x]=1; 
            q.push(ed); 
        } 
        if(go(st.x+1)&&!visit[st.x+1]) 
        { 
            ed.x=st.x+1; 
            ed.time=st.time+1; 
            visit[ed.x]=1; 
            q.push(ed); 
        } 
    } 
    return; 

int main() www.zzzyk.com

    while(scanf("%d %d",&n,&k)!=EOF) 
    { 
        if(n==k) 
        printf("0\n"); 
        else 
        bfs(n,k); 
    } 
    return 0; 

作者:Cambridgeacm

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,