设为首页 加入收藏

TOP

BFS(四):搜索状态判重(二)
2019-07-10 12:10:28 】 浏览:229
Tags:BFS 搜索 状态
sp;    

           }

           num += fact[6-i-1] * temp;

       }

       return num;

}

int BFS(char src[],char dest[])

{

       int vis[720]={0},step[720],front,rear,s0,s1,ts,i;

       char q[720][7],cur[7],next[7],tmp;

       front=rear=0;

       s1=hash(dest);

       strcpy(q[rear++],src);

       s0=hash(src);

       vis[hash(src)]=1;

       step[s0]=0;

       while (front<rear)

       {

              strcpy(cur,q[front++]);  // 出队列

              s0=hash(cur);

              if (s0==s1)             // 达到目标状态

                     return  step[s0];

              for (i=0;i<6-1;i++)

              {

                    strcpy(next,cur);

                    tmp=next[i]; next[i]=next[i+1];next[i+1]=tmp;  // 交换位置i和i+1中的数字

                     ts=hash(next);

                     if (vis[ts]==0)   // 状态未出现过

                     {

                            vis[ts]=1;

                            step[ts]=step[s0]+1;  // 记录步数

                            strcpy(q[rear++],next);

                     }

              }

       }

}

int main()

{

         char src[7],dest[7];

         while(scanf("%s%s",src,dest)!=EOF)

        {

          &n

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇BFS(五):八数码难题 (POJ 107.. 下一篇Can you answer these queries III

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目