设为首页 加入收藏

TOP

BFS(五):八数码难题 (POJ 1077)(三)
2019-07-10 12:10:29 】 浏览:224
Tags:BFS 八数码 难题 POJ 1077
   

   int k, i;

   node cur, nst;   

   for(k=0; k<MAXN; ++k) 

       visited[k] = 0;  

   k = hash(start.board);

   parent[k] = -1;  

   visited[k] = 1;  

   queue <node> que; 

   que.push(start);  

   while(!que.empty())

   {

       cur = que.front();  

       que.pop();     

       for(i=0; i<4; ++i)

          {    

          if(!(i==0 && cur.space<3 || i==1 && cur.space%3==0 || i==2 && cur.space%3==2 ||i==3 && cur.space>5))

            {  

              nst = cur;          

              nst.space = cur.space-5+2*(i+1);      

              nst.board[cur.space]=nst.board[nst.space];

                      nst.board[nst.space]=9;

              k = hash(nst.board);   

              if(visited[k] != 1)

                      {   

                move[k] = i;      

                visited[k] = 1;       

                parent[k] = hash(cur.board);         

                if(k == 0)  //目标结点hash值为0    

                   return;           

                que.push(nst);             

                      }          

                }  

          } 

   }

}

void print_path()

{

首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇洛古最简单50题解(41-50) 下一篇BFS(四):搜索状态判重

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目