社区讨论
为什么会这样
P1238走迷宫参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lrm0tm93
- 此快照首次捕获于
- 2024/01/20 20:03 2 年前
- 此快照最后确认于
- 2024/01/20 21:50 2 年前
写题时做到35pts,看了讨论版后发现
CPP#include<bits/stdc++.h>
using namespace std;
bool map_[50][50],vis[50][50];
int n,m,a1,b1,a2,b2,r[500][2],k,fx[4][2]={{0,-1},{-1,0},{0,1},{1,0}},cnt;
void dfs(int a,int b){
if(a==a2&&b==b2){
for(int i=0;i<k;i++) cout<<"("<<r[i][0]+1<<","<<r[i][1]+1<<")"<<"->";
cout<<"("<<a2+1<<","<<b2+1<<")";
cout<<endl;
cnt++;
return ;
}
if(a<0 || b<0 || a>=n || b>=m) return ;
for(int i=0;i<4;i++){
r[k][0]=a,r[k][1]=b;
k++;
int xx=a+fx[i][0],yy=b+fx[i][1];
//cout<<i<<" "<<k<<" "<<fx[i][0]<<" "<<fx[i][1]<<" "<<xx<<" "<<yy<<" "<< (xx>=0 && yy>=0 && xx<n && yy<m) <<" "<< (!vis[xx][yy]) <<" "<< (map_[xx][yy]) <<endl;
if(xx>=0 && yy>=0 && xx<n && yy<m && !vis[xx][yy] && map_[xx][yy]) vis[xx][yy]=1,dfs(xx,yy),vis[xx][yy]=0;
k--;
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>map_[i][j];
//for(int i=0;i<n;i++){
// for(int j=0;j<m;j++) cout<<map_[i][j];
// cout<<endl;
//}
cin>>a1>>b1>>a2>>b2,a1--,b1--,a2--,b2--;
vis[a1][b1]=1;//L35
dfs(a1,b1);
if(cnt==0) cout<<-1;
}
加上第35行的代码后便能AC,而不加只有35pts,运行错误数据发现路径输出了两遍,请问一下有没有大佬知道这是为什么。
回复
共 1 条回复,欢迎继续交流。
正在加载回复...