思路:当同一个地方走过第二次就说明迷路
#include<stdio.h> int main(){ int n,m,q; scanf("%d %d %d",&n,&m,&q); int str[128][128]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ scanf("%d",&str[i][j]); } } while(q--){ int x,y; scanf("%d %d",&x,&y); x-=1; y-=1; int i=x,j=y; int cnt=0; int a[128][128]={0}; while((i<n&&i>=0)&&(j>=0&&j<m)){ if(a[i][j]==1){ cnt=-1; break; } int t=str[i][j]; a[i][j]=1; cnt++; if(t==1) { i-=1; } if(t==2) { i+=1; } if(t==3) { j-=1; } if(t==4) { j+=1; } } printf("%d\n",cnt); } }