初学数据结构第一题

来源:互联网 发布:python人脸识别 编辑:程序博客网 时间:2024/06/05 01:54

     既然要重新开始踏上征程,在学习新的知识前,先回顾下以前所学过的一些皮毛。

     数据结构,对于IT行业的学习者来说是一门很重要的课,而本人学的第一个知识点,是由学长所点拨之下学习的数据结构中很重要的思想,栈与队列的思想,下面附出本人第一次运用队列知识所解决的一道题目,此题是NYOJ的第58题,也是从此题开始,本人正式踏上了学习数据结构之路,算是个小小的回顾的同时重新备忘吧!

点击打开链接PS:代码有点乱~~找时间重新写一遍,然后注释微笑

  #include <stdio.h>#include <string.h>#include <queue>using namespace std;int a[9][9]={      1,1,1,1,1,1,1,1,1,      1,0,0,1,0,0,1,0,1,      1,0,0,1,1,0,0,0,1,      1,0,1,0,1,1,0,1,1,      1,0,0,0,0,1,0,0,1,      1,1,0,1,0,1,0,0,1,      1,1,0,1,0,1,0,0,1,      1,1,0,1,0,0,0,0,1,      1,1,1,1,1,1,1,1,1  };  struct sb{int x,y,step;};int visit[9][9];int ab(int x1,int y1,int x2,int y2){queue<sb>q;int i,s,t,m[]={-1,1,0,0},n[]={0,0,-1,1};visit[x1][y1]=1;sb e={x1,y1,0};q.push(e);while(!q.empty()){e=q.front();if(e.x==x2&&e.y==y2)break;q.pop();for(i=0;i<4;i++){s=e.x+m[i];t=e.y+n[i];if(s<=8&&s>=0&&t<=8&&t>=0&&visit[s][t]==0&&a[s][t]==0){sb e1={s,t,e.step+1};q.push(e1);visit[s][t]=1;}}}if(q.empty())return -1;while(!q.empty()){q.pop();}return e.step;}int main(){int x1,y1,x2,y2,t,sum;scanf("%d",&t);while(t--){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);memset(visit,0,sizeof(visit));        sum=ab(x1,y1,x2,y2);printf("%d\n",sum);}return 0;}                


 

原创粉丝点击