程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU-2717-Catch That Cow

HDU-2717-Catch That Cow

編輯:C++入門知識

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.2cto.com

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

作者:Cambridgeacm

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved