标题:各位大佬帮忙看下这个代码哪里有问题(附题目和代码)
只看楼主
kongxinqi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-8-18
结帖率:0
已结贴  问题点数:20 回复次数:1 
各位大佬帮忙看下这个代码哪里有问题(附题目和代码)
程序代码:
#include <iostream>
using namespace std;
bool vis[301][301];
int dx[8]={2,-2,1,-1,2,-2,1,-1}, dy[8]={1,1,2,2,-1,-1,-2,-2};
int h[10001][4];
int m, n;
void bfs(int lx, int ly, int ex, int ey)
{
    vis[lx][ly]=1;
    int head=1, tail=1;
    h[1][1]=lx, h[1][2]=ly, h[1][3]=0; 
    while(head<=tail)
    {
        for(int i=0;i<8;i++)
        {
            int nx=h[head][1]+dx[i], ny=h[head][2]+dy[i];
            if(nx>=0&&nx<n&&ny>=0&&ny<n&&vis[nx][ny]!=1)
            {
                tail++;
                vis[nx][ny]=1;
                h[tail][1]=nx, h[tail][2]=ny, h[tail][3]=h[head][3]+1;
                if(nx==ex&&ny==ey)
                {
                    cout<<h[tail][3]<<endl;
                    return;
                }
            }
        }
        head++;
    }
}
int main()
{
    int x1, y1, x2, y2;
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>n;
        cin>>x1>>y1;
        cin>>x2>>y2;
        if(x1==x2&&y1==y2)
            cout<<0<<endl;
        else
            bfs(x1, y1, x2, y2);
    }
    return 0;
} 

http://ybt. 题目链接
搜索更多相关主题的帖子: head 代码 int i++ cin 
2021-08-18 21:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
有问题,你要说清楚呀!
我输入了【输入样例】,输出跟【输出样例】不符。

看代码,从第一句“bool vis[301][301];”开始。
为什么那么喜欢定义全局变量?算了,不多说,多说人不喜。
那你起码也要在函数 bfs 中重新将它 赋值为false 吧!
2021-08-19 16:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506570-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.437285 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved