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:第一次写位运算类型的BFS....顺便发下位运算的状态转移函数In Reply To:第一次写位运算类型的BFS....顺便发下位运算的状态转移函数 Posted by:majia5 at 2008-07-24 11:42:35 > 居然忘记把自己这点取反拉..... > 还有 > 居然是多case > 题目好坏mislead我.... > 不过AC了就是好拉拉拉...happy....:) > > 新人写的不好见笑... > > struct sta > { > int state;/*用位保存保存状态的...保存在低16位*/ > int step;/*当前所走步数,其实可以不用...*/ > > }p,temp,s; > /*id从0..15*/ > void move(sta *a,int id) > { > a->state<<=id; > a->state^=32768;/*把低第16位取反*/ > a->state>>=id; > /*如果存在下一行*/ > if(id<=11) > { > a->state<<=(id+4); > a->state^=32768; > a->state>>=(id+4); > } > /*如果存在上一行*/ > if(id>=4) > { > a->state<<=(id-4); > a->state^=32768; > a->state>>=(id-4); > } > /*如果是边界点(左边界)*/ > if(id==0||id==4||id==8||id==12) > { > a->state<<=(1+id); > a->state^=32768; > a->state>>=(id+1); > } > else > /*如果是边界点(右边界)*/ > if(id==3||id==7||id==11||id==15) > { > a->state<<=(id-1); > a->state^=32768; > a->state>>=(id-1); > } > /*如果是其他中间点*/ > else > { > a->state<<=(id+1); > a->state^=32768; > a->state>>=2; > a->state^=32768; > a->state>>=(id-1); > } > } > > :) Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator