真是水题,感谢HAOI送的福利样例23333
裸BFS,用string做判重,会八数码就会这题。
注意由于队列中状态数很多,一定要把队列的数组开大点!!!
#include #include #include #include #include #include #include #define MAXN 5 using namespace std; mapvisit; int tmp[MAXN][MAXN],nowstatus[MAXN][MAXN]; int xx[]={1,-1,0,0},yy[]={0,0,1,-1}; bool inMap(int x,int y) { if(x<1||x>4||y<1||y>4) return false; return true; } string GetPermutationFromArray() { string ans=; for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) ans+=tmp[i][j]+'0'; return ans; } void GetArrayFromPermutaion(string s) { int p=0; for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) tmp[i][j]=s[p++]-'0'; } struct node { string status; int step; }q[100000],first,goal; int h=0,t=0; int BFS() { q[t++]=first; visit[first.status]=true; while(h>s; first.status+=s; } for(int i=1;i<=4;i++) { cin>>s; goal.status+=s; } printf(%d ,BFS()); return 0; }
·2024年9月目录 ·2024年8月目录 ·2024年7月目录 ·2024年6月目录 ·2024年5月目录 ·2024年4月目录 ·2024年3月目录 ·2024年2月目录 ·2024年1月目录 ·2023年12月目录 ·2023年11月目录 ·2023年10月目录 ·2023年9月目录 ·2023年8月目录