题目链接 [八数码] https://www.acwing.com/problem/content/847/
求解,为什么这里的end声明在开头会报错ambiguous?
我把end的声明放在bfs中就能跑通。
错误的代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <unordered_map>
using namespace std;
string end="12345678x";
const int N = 4;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int bfs(string start)
{
queue<string> q;
q.push(start);
unordered_map<string,int> hash;
hash[start]=0;
while(q.size())
{
auto tt=q.front();
q.pop();
int distance=hash[tt];
if(tt==end) return distance;
int k=tt.find('x');
int x=k/3,y=k%3;
for(int i=0;i<4;i++)
{
int a=x+dx[i],b=y+dy[i];
if(a>=0&&a<3&&b>=0&&b<3)
{
swap(tt[k],tt[a*3+b]);
if(!hash.count(tt))
{
q.push(tt);
hash[tt]=distance+1;
}
swap(tt[k],tt[a*3+b]);
}
}
}
return -1;
}
int main()
{
string a;
char c;
for(int i=0;i<9;i++)cin>>c,a.push_back(c);
cout<<bfs(a)<<endl;
return 0;
}
编译器报了什么错误 xxx is ambiguous
提问于27天前
1221