gpt4 book ai didi

c++ - 程序的意外输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:22:58 25 4
gpt4 key购买 nike

问题陈述:http://www.spoj.com/problems/NAKANJ/我的解决方案:

#include<bits/stdc++.h>
using namespace std;
int x[10]={0,2,2,-2,-2,1,1,-1,-1};
int y[10]={0,1,-1,1,-1,2,-2,2,-2};
int bfs(int a1,int b1,int a2,int b2)
{
pair<int,int> p;
int i;
queue<pair<int,int> >q;
int moves[9][9],visit[9][9],m,n;
memset(moves,0,sizeof(moves));
memset(visit,0,sizeof(visit));
p.first=a1;
p.second=b1;
q.push(p);
moves[a1][b1]=0;
while(!q.empty())
{
p=q.front();
q.pop();
if(p.first==a2&&p.second==b2)
return moves[a2][b2];
for(i=1;i<=8;i++)
{
m=p.first+x[i];
n=p.second+y[i];
if(m>8||m<1||n>8||n<1)
continue;
else
{
visit[m][n]=1;
moves[m][n]=moves[p.first][p.second]+1;
q.push(make_pair(m,n));
}
}
}
}
int main()
{
long long int t;
cin>>t;
while(t--)
{
string d,f;
cin>>d>>f;
int s=d[0]-'a';int r=f[0]-'a';
cout<<bfs(s+1,(int)d[1],r+1,(int)f[1])<<endl;
}
return 0;
}

Input :
3
a1 h8
a1 c2
h8 c3

output :
-1217403904
-1217403904
-1217403904

这个奇怪的输出是什么原因。逻辑和算法实现对我来说似乎很好。任何帮助表示赞赏。

最佳答案

您的 moves 数组有 9 行和 9 列 -

int moves[9][9];  

当你从这样的 Action 中返回一些东西时 -

if(p.first==a2&&p.second==b2)
return moves[a2][b2];

检查a2和b2是否小于9 -

if(p.first==a2&&p.second==b2){
if(a2 < 9 && b2 <9){
return moves[a2][b2];
}
}

关于c++ - 程序的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com