• 洛谷 P1379 八数码难题 题解


    我个人感觉就是一道bfs的变形,还是对bfs掌握不好的人有一定难度。

    本题思路:

    大体上用bfs搜,用map来去重,在这里只需要一个队列,因为需要较少步数达到的状态一定在步数较多的状态之前入队列。

     1 #include<iostream>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<map>
     6 #include<queue>
     7 using namespace std;
     8 long long dx[4]={-1,0,0,1};
     9 long long dy[4]={0,-1,1,0};
    10 long long n;
    11 int  main()
    12 {
    13     cin>>n;
    14     queue<long long> q;
    15     q.push(n);
    16     map<long long,long long> m;
    17     m[n]=0;
    18     while(!q.empty())
    19     {
    20         int cnt=q.front(); 
    21         int zyc[3][3],xx=0,yy=0,n=cnt;
    22         q.pop();
    23         if(cnt==123804765)break;
    24         for(long long i=2;i>=0;i--)
    25             for(long long j=2;j>=0;j--)
    26             {
    27                 zyc[i][j]=n%10;
    28                 n/=10;
    29                 if(!zyc[i][j])
    30                 {
    31                     xx=i;
    32                     yy=j;
    33                 }
    34             }
    35         for(long long i=0;i<4;i++)
    36         {
    37             long long nx=xx+dx[i],ny=yy+dy[i],ans=0;
    38             if(nx<0||ny<0||nx>2||ny>2)continue;
    39             swap(zyc[nx][ny],zyc[xx][yy]);
    40             for(long long i=0;i<3;i++)
    41                 for(long long j=0;j<3;j++)ans=ans*10+zyc[i][j];
    42             if(!m.count(ans))
    43             {
    44                 m[ans]=m[cnt]+1;
    45                 q.push(ans);
    46             }
    47             swap(zyc[nx][ny],zyc[xx][yy]);
    48         }
    49     }
    50     cout<<m[123804765]; 
    51     return 0;
    52 }
    请各位大佬斧正(反正我不认识斧正是什么意思)
  • 相关阅读:
    progID
    windbg
    msil_accessibility_b03f5f7f11d50a3a_6.1.7600.16385_none_2232298e4f48d6ba
    jupybook编程快捷键
    django遇到的error(待续)
    python 遇到error(待续)
    前端 遇到error(待续)
    sql语句组件 在框架中的应用
    django models分页
    Python的学习之旅———用户与程序交互
  • 原文地址:https://www.cnblogs.com/handsome-zyc/p/11237371.html
Copyright © 2020-2023  润新知