Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
c++AC。粗暴型,附代码#include<cstdio> #include<queue> using namespace std; int N,K; bool mark[100001]; struct E{ int x; int t; }; queue<E>Q; int BFS(int x,int t) { while(Q.empty()==false) { E now=Q.front(); Q.pop(); for(int i=0;i<3;i++) { if(i==0){ int nx=now.x+1; if(nx<0||nx>100000||mark[nx]==true)continue; E tmp; tmp.x=nx; tmp.t=now.t+1; Q.push(tmp); mark[nx]=true; if(nx==K)return tmp.t; } else if(i==1){ int nx=now.x-1; if(nx<0||nx>100000||mark[nx]==true)continue; E tmp; tmp.x=nx; tmp.t=now.t+1; Q.push(tmp); mark[nx]=true; if(nx==K)return tmp.t; } else if(i==2){ int nx=2*now.x; if(nx<0||nx>100000||mark[nx]==true)continue; E tmp; tmp.x=nx; tmp.t=now.t+1; Q.push(tmp); mark[nx]=true; if(nx==K)return tmp.t; } } } } int main() { for(int i=0;i<=100000;i++) mark[i]=false; scanf("%d%d",&N,&K); mark[N]=true; while(Q.empty()==false)Q.pop(); E tmp; tmp.x=N; tmp.t=0; Q.push(tmp); int time=BFS(N,0); printf("%d",time); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator