Catch That Cow
这道题wa了首先是RE,因为数组下标没有有负的,其次是wa,wa了好几次,我就耐闷了,原来题目要求我输出最小的时间,还有当N>M时。。
#include<iostream> #include<string.h> #include<queue> using namespace std; int N,M,visit[1000010],dp[1000010]; const int inf=0x7fffffff; int main() { while(scanf("%d%d",&N,&M)!=EOF) { int i,j,x,t,max=inf; if(N>M) { printf("%d\n",N-M); continue; } memset(visit,0,sizeof(visit)); memset(dp,0,sizeof(dp)); queue<int>q; q.push(N); x=N; while(!q.empty()) { x=q.front(); if(x==M) { if(dp[x]<max) max=dp[x]; visit[x]=0; } q.pop(); t=x-1; if(!visit[t]&&t>=0&&t<=M+2) { //if(!(t*2<=M&&(t+2)*2<=M)) q.push(t);visit[t]=1;dp[t]=dp[x]+1; } t=x+1; if(!visit[t]&&t>=0&&t<=M+2) { q.push(t); visit[t]=1; dp[t]=dp[x]+1; } t=2*x; if(!visit[t]&&t>=0&&t<=M+2) { q.push(t); visit[t]=1; dp[t]=dp[x]+1; } } printf("%d\n",max); } return 0; }
posted on 2011-05-08 21:04 more think, more gains 阅读(216) 评论(0) 编辑 收藏 举报