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 |
第一次写位运算类型的BFS....顺便发下位运算的状态转移函数居然忘记把自己这点取反拉..... 还有 居然是多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