不能这么定义吗

P2895 [USACO08FEB] Meteor Shower S

cxzhyf @ 2023-05-25 20:40:27

不知道为什么,一直报错,蒟蒻也不知道哪里有语法错误,请大佬指点

上代码:

#include<bits/stdc++.h>
using namespace std;
int n,sx,sy,st,ans[306][306],mp[306][306],b[306][306],dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
int pd(int x){
    if(x==-1) return 888;
    else return x;
}
int main()
{
    int i,j;
    cin>>n;
    for(i=0;i<300;i++)
        for(j=0;j<300;j++) mp[i][j]=-1;
    for(i=1;i<=n;i++){
        cin>>sx>>sy>>st;
        for(j=0;j<5;j++)
            if(sx+dx[j]>=0&&sy+dy[j]>=0&&(mp[sx+dx[j]][sy+dy[j]]==-1||mp[sx+dx[j]][sy+dy[j]]>st)) mp[sx+dx[j]][sy+dy[j]]=st;
    }
    queue<int> q[2];
    b[0][0]=1;
    q[0].push(0);
    q[1].push(0);
    while(!q[0].empty()){
        int x=q[0].front(),y=q[1].front();
        q[0].pop();
        q[1].pop();
        int s=ans[x][y]+1;
        if(mp[x][y]==-1){
            cout<<s-1;
            return 0;
        }
    }
    for(i=1;i<=4;i++){
        int xx=x+dx[i],yy=y+dy[i];
        if(xx>=0&&yy>=0&&s<pd(mp[xx][yy])&&b[xx][yy]==0){
            q[0].push(xx);
            q[1].push(yy);
            b[xx][yy]=1;
            ans[xx][yy]=s;
        }
    }
    cout<<-1;
    return 0;
}

by 幻想繁星 @ 2023-05-25 20:42:50

@cxzhyf 你根本没定义x和y呀


by 幻想繁星 @ 2023-05-25 20:43:58

@cxzhyf 在大括号里定义的变量仅在大括号里有效,这是C++的基本语法


by songyouyi @ 2023-05-25 20:44:24

x,y呢


by 李至擎 @ 2023-05-25 20:49:20

这样就对了

#include<bits/stdc++.h>
using namespace std;
int n,sx,sy,st,ans[306][306],mp[306][306],b[306][306],dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
int pd(int x){
    if(x==-1) return 888;
    else return x;
}
int main()
{
    int i,j;
    cin>>n;
    for(i=0;i<300;i++)
        for(j=0;j<300;j++) mp[i][j]=-1;
    for(i=1;i<=n;i++){
        cin>>sx>>sy>>st;
        for(j=0;j<5;j++)
            if(sx+dx[j]>=0&&sy+dy[j]>=0&&(mp[sx+dx[j]][sy+dy[j]]==-1||mp[sx+dx[j]][sy+dy[j]]>st)) mp[sx+dx[j]][sy+dy[j]]=st;
    }
    queue<int> q[2];
    b[0][0]=1;
    q[0].push(0);
    q[1].push(0);
    while(!q[0].empty()){
        int x=q[0].front(),y=q[1].front();
        q[0].pop();
        q[1].pop();
        int s=ans[x][y]+1;
        if(mp[x][y]==-1){
            cout<<s-1;
            return 0;
        }
        for(i=1;i<=4;i++){
            int xx=x+dx[i],yy=y+dy[i];
            if(xx>=0&&yy>=0&&s<pd(mp[xx][yy])&&b[xx][yy]==0){
                q[0].push(xx);
                q[1].push(yy);
                b[xx][yy]=1;
                ans[xx][yy]=s;
            }
        }
    }
    cout<<-1;
    return 0;
}

by cxzhyf @ 2023-05-25 20:50:22

万分致谢ヾ(´・ ・`。)ノ


|