本文主要是介绍4.4 bps 拯救小哈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>//只有一个路线,没有深度优先的分支!!!//节点法创建顺序队列
//节点
typedef struct note
{int x;int y;int s;
}note;int main()
{int i,j,k,n,p,q,tx,ty,flag,book[51][51]={0},a[51][51]={0};scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=n;j++){a[i][j]=n;}//方向数组int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//队列note que[2501];int head;int tail;//队列初始化head=1;tail=1;//出发点进入队列,并且标记que[1].x=1;que[1].y=1;que[1].s=0;tail++;book[1][1]=1;while(head<tail){//循环讨论四种情况下的子节点//成功的出循环后消除父节点for(k=0;k<=3;k++){tx=que[head].x+next[k][0];ty=que[head].y+next[k][1];//去除越界情况if(tx<1||ty<1||tx>n||ty>n)continue;//去除障碍物和已走过路径情况if(a[tx][ty]!=0||book[tx][ty]!=0)continue;//可以走//标记,入队book[tx][ty]=1;que[tail].x=tx;que[tail].y=ty;que[tail].s=que[head].s+1;//父亲步数+1tail++;//如果到达终点,任务结束!跳1if(tx==p&&ty==q){flag=1;break;}}//跳2,去打印if(flag==1){break;}//四种节点扩展完毕,消除父节点head++;}//打印步数printf("%d",que[tail-1].s);system("pause");return 0;
}
这篇关于4.4 bps 拯救小哈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!