搜索:poj 3278 Catch That Cow(广搜)
【转】http://blog.csdn.net/zxy_snow/article/details/5738154
?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Q[300000];
int count[300000];
int sta[300000];
int n,head,tail;
void Enq(int x)
{
??? Q[head++] = x;
}
int Deq(void)
{
??? return Q[tail++];
}
int Qempty()
{
??? if( head == tail)
??????? return 1;
??? return 0;
}
int main(void)
{
??? int N,K,temp;
??? while(scanf("%d%d",&N,&K)!=EOF)
??? {
??????? head = 0;
??????? tail = 0;
??????? memset(count,0,sizeof(count));
??????? memset(Q,0,sizeof(Q));
??????? memset(sta,0,sizeof(sta));
??????? Enq(N);
??????? sta[N] = 1;
??????? while( !Qempty() )
??????? {
??????????? N = Deq();
??????????? if( N == K)
??????????? {
??????????????? printf("%d/n",count[N]);
??????????????? break;
??????????? }
??????????? temp = N+1;
??????????? if( temp<=100000 && sta[temp] == 0)
??????????? {
??????????????? sta[temp] = 1;
??????????????? count[temp] = count[N] + 1;
??????????????? Enq(temp);
??????????? }
??????????? temp = N-1;
??????????? if( temp>=0 && sta[temp] == 0)
??????????? {
??????????????? sta[temp] = 1;
??????????????? count[temp] = count[N] + 1;
??????????????? Enq(temp);
??????????? }
??????????? temp = N*2;
??????????? if( temp<=100000 && sta[temp] == 0)
??????????? {
??????????????? sta[temp] = 1;
??????????????? count[temp] = count[N] + 1;
??????????????? Enq(temp);
??????????? }???????
??????? }
??? }
system("pause");
return 0;
}