| ||||||||||
| 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