问题标题: 酷町堂:4241编译错误帮忙找一下啊

0
0
已解决
王梓澳
王梓澳
中级光能
中级光能

我的代码:

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
struct node
{
    int x,y,bs;
}tmp,h,st;
int n;
int map[101][101],time[101][101],f[101][101];
int dir[5][2]={{0},{1,0},{0,1},{-1,0},{0,-1}};
queue<node> q;
void bfs(int hh,int sh)
{
    st.x=hh;st.y=sh;st.bs=0;
    q.push(st);
    while (!q.empty())
    {
        h=q.front();
        time[h.x][h.y]=min(time[h.x][h.y],h.bs);
        q.pop();
        for (int i=1;i<=4;i++)
        {
            int nx,ny;
            nx=h.x+dir[i][0];
            ny=h.y+dir[i][1];
            if (nx<=n&&ny<=n&&!f[nx][ny]&&nx>=1&&ny>=1)
            {
                tmp.x=nx;
                tmp.y=ny;
                tmp.bs=h.bs+1;
                q.push(tmp);
                f[nx][ny]=1;
            }
        }
    }
}
int main ()
{
    cin>>n;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            cin>>map[i][j];
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            if (map[i][j]==1)
                time[i][j]=1000000;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        {
            memset(f,0,sizeof(f));
            if (map[i][j]==0)
                bfs(i,j);
        }
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
            cout<<time[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

测试完全正确,但是。。。

帮忙找一下啊


0
已采纳
舒航
舒航
新手守护
新手守护

你的time数组定义有问题哦~

换一个名称就行了,but:

这样改后只得50分,其他点超时,可能其他地方有问题,你再想想

0
我要回答