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
万分致谢ヾ(´・ ・`。)ノ