Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
107693 林泽豪 迷宫问题 C++ 解答错误 33 2 MS 1056 KB 2389 2023-10-27 22:39:46

Tests(5/15):


#include<bits/stdc++.h> using namespace std; bool a[105][105]; int a1[10000]; int a2[10000]; int nm=0; int mn[10000]; int l,v,n,m; int sb(int p,int x){ if(p==m&&x==n){ cout<<"1 1"<<endl; for(int i=1;i<=v;i++){ cout<<a1[i]<<' '<<a2[i]<<endl; } return 0; }else{ if((p!=1&&a[p-1][x]==0)+(x!=1&&a[p][x-1]==0)+(p!=m&&a[p+1][x]==0)+(x!=n&&a[p][x+1]==0)+(p!=m&&x!=n&&a[p+1][x+1]==0)+(p!=1&&x!=n&&a[p-1][x+1]==0)+(p!=n&&x!=1&&a[p+1][x-1]==0)+(p!=n&&x!=1&&a[p+1][x-1]==0)>=2){ nm++; mn[nm]=v; } if(p!=m&&a[p+1][x]==0){ v++; a1[v]=p+1; a2[v]=x; a[p][x]=1; return sb(p+1,x+1); } if(p!=m&&x!=n&&a[p+1][x+1]==0){ v++; a1[v]=p+1; a2[v]=x+1; a[p][x]=1; return sb(p+1,x+1); } if(x!=n&&a[p][x+1]==0){ v++; a1[v]=p; a2[v]=x+1; a[p][x]=1; return sb(p,x+1); } if(p!=1&&x!=n&&a[p-1][x+1]==0){ v++; a1[v]=p-1; a2[v]=x+1; a[p][x]=1; return sb(p-1,x+1); } if(p!=1&&a[p-1][x]==0){ v++; a1[v]=p-1; a2[v]=x; a[p][x]=1; return sb(p-1,x); } if(p!=n&&x!=1&&a[p+1][x-1]==0){ v++; a1[v]=p+1; a2[v]=x-1; a[p][x]=1; return sb(p+1,x-1); } if(x!=1&&a[p][x-1]==0){ v++; a1[v]=p; a2[v]=x-1; a[p][x]=1; return sb(p,x-1); } if(x!=1&&p!=1&&a[p-1][x-1]==0){ v++; a1[v]=p-1; a2[v]=x-1; a[p][x]=1; return sb(p-1,x-1); } if((p!=1&&a[p-1][x]==0)+(x!=1&&a[p][x-1]==0)+(p!=m&&a[p+1][x]==0)+(x!=n&&a[p][x+1]==0)+(p!=m&&x!=n&&a[p+1][x+1]==0)+(p!=1&&x!=n&&a[p-1][x+1]==0)+(p!=n&&x!=1&&a[p+1][x-1]==0)+(p!=n&&x!=1&&a[p+1][x-1]==0)==0){ if(a[min(m,2)][1]==1&&a[1][min(n,2)]==1&&a[min(m,2)][min(n,2)]==1){ cout<<"-1"; return 1; }else{ v=mn[nm]; nm--; a[p][x]=1; sb(a1[mn[nm]],a2[mn[nm]]); } } } } int main() { cin>>m>>n; for(int i=1;i<=m;i++){ for(int o=1;o<=n;o++){ cin>>a[i][o]; } } sb(1,1); return 0; }


测评信息: