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 |
Re:本地各种测试case各种过,提上去就是WA....求助!!In Reply To:本地各种测试case各种过,提上去就是WA....求助!! Posted by:zhifang_yu at 2015-06-16 16:02:59 > //#include "stdafx.h" > > > #include <stdio.h> > struct Node > { > int num; > struct Node *pre; > }mNodeList[200002]; > > > int N,K; > int index=1,count=1,temp,steps=0; > > void BFS() > { > int map[200002]={0}; > struct Node firstNode,mNodeLeft,mNodeRight,mNodeDouble; > firstNode.num = N; > firstNode.pre = NULL; > mNodeList[1] = firstNode; > map[N] = -1; > do > { > mNodeLeft.num = mNodeList[index].num-1; > mNodeLeft.pre = &mNodeList[index]; > > mNodeRight.num = mNodeList[index].num+1; > mNodeRight.pre = &mNodeList[index]; > > mNodeDouble.num = mNodeList[index].num*2; > mNodeDouble.pre = &mNodeList[index]; > if(mNodeDouble.num <=200000 && map[mNodeDouble.num] != -1) > { > mNodeList[++count] = mNodeDouble; > map[mNodeDouble.num] = -1; > } > > if(mNodeRight.num <=100000 && map[mNodeRight.num] != -1) > { > mNodeList[++count] = mNodeRight; > map[mNodeRight.num] = -1; > } > > if(mNodeLeft.num>=0 && map[mNodeLeft.num] != -1) > { > mNodeList[++count] = mNodeLeft; > map[mNodeLeft.num] = -1; > } > > index++; > }while(mNodeLeft.num!=K&&mNodeRight.num!=K&&mNodeDouble.num!=K); > > if(mNodeLeft.num == K) > { > temp = count-2; > }else if(mNodeRight.num == K) > { > temp = count-1; > }else > temp = count; > struct Node tempNode; > tempNode = mNodeList[temp]; > while(tempNode.pre != NULL) > { > tempNode = *tempNode.pre; > steps++; > } > > if(N>=K) > printf("%d\n",N-K); > else > printf("%d\n",steps); > } > > int main() > { > while(scanf("%d%d", &N, &K) != EOF) > { > index=1;count=1;temp=0;steps=0; > BFS(); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator