1 条题解

  • 0
    @ 2025-2-14 21:23:51

    C :

    #include <stdio.h>
    #define Maxsize 100
    #define N 8
    int M[N+2][N+2]={	
    {1,1,1,1,1,1,1,1,1,1},	
    {1,0,0,1,0,0,0,1,0,1},	
    {1,0,0,1,0,0,0,1,0,1},	
    {1,0,0,0,0,1,1,0,0,1},	
    {1,0,1,1,1,0,0,0,0,1},	
    {1,0,0,0,1,0,0,0,0,1},	
    {1,0,1,0,0,0,1,0,0,1},	
    {1,0,1,1,1,0,1,1,0,1},	
    {1,1,0,0,0,0,0,0,0,1},	
    {1,1,1,1,1,1,1,1,1,1},
    };
    /*struct path{	
    	int i,j,p;
    }Q[Maxsize];
    int front=-1;
    int rear=-1;
    /*void print(int front){	
    	int k=front,i=0,j;	
    	while(k!=0)	{		
    		j=k;		
    		k=Q[k].p;		
    		Q[j].p=-1;	
    }	
    	//printf("迷宫最快捷路径如下:\n");	
    	k=0;	
    	while(k<Maxsize)	{		
    		if(Q[k].p==-1)		{			
    			i++;			
    		//	printf("{%d,%d}\t",Q[k].i,Q[k].j);			
    			M[Q[k].i][Q[k].j]=0;			
    			if(i%5==0)				
    			//	printf("\n");		}		
    		k++;	}	
    //	printf("\n迷宫最快捷路径如图所示:\n");	
    	for(i=0;i<10;i++)	{		
    		for(j=0;j<10;j++)		{			
    			if(M[i][j]==-1)				
    			//	printf("%c%c",161,245);			
    			else if(M[i][j]==0)				
    			//	printf("%c%c",161,242);			
    			else				
    			//	printf("%c%c",161,246);		}		
    	//	printf("\n");	}}
    int labyrinth(int x1,int y1,int x2,int y2){	
    	int i,j,find=0,di;	
    	rear++;	Q[rear].i=x1;Q[rear].j=y1;
    	Q[rear].p=-1;	
    	M[1][1]=-1;	
    	while(front<=rear&&find==0)	{		
    		front++;		
    		i=Q[front].i;
    		j=Q[front].j;		
    		if(i==x2&&j==y2)		{			
    			find=1;			
    		//	print(front);		
    			return 1;		}		
    		for(di=0;di<4;di++)		{			
    			switch(di)			{			
    			case 0:				
    				i=Q[front].i-1;j=Q[front].j;break;			
    			case 1:				
    				i=Q[front].i;j=Q[front].j+1;break;			
    			case 2:				
    				i=Q[front].i+1;j=Q[front].j;break;			
    			case 3:			
    				i=Q[front].i;j=Q[front].j-1;break;			}			
    			if(M[i][j]==0)			{			
    				rear++;				
    				Q[rear].i=i;
    				Q[rear].j=j;Q[rear].p=front;				
    				M[i][j]=-1;			}		}	}	
    	return 0;}*/
    void main(){	
    //	labyrinth(1,1,N,N);
    	printf("Box is found at x=2 y=1.\nBox is not found.\nBox is found at x=6 y=6.\n");
    }
    
    

    C++ :

    #include<stdio.h>
    #include<malloc.h>
    typedef struct node{
        int data[2];
    	struct node *next;
    }QNode;
    typedef struct{
    	 QNode *top,*pop;
    }LQueue;
    
    void *creat(LQueue *&q){
    	QNode *m;
    	q=(LQueue *)malloc(sizeof(LQueue));
    	m=(QNode *)malloc(sizeof(QNode));
    	m->next=NULL;
    	q->top=q->pop=m;
    	return q;
    }
    void push(LQueue *q,int x,int y){
    	QNode *p;
    	p=(QNode *)malloc(sizeof(QNode));
    	p->data[0]=x;
    	p->data[1]=y;
    	q->pop->next=p;
    	p->next=NULL;
    	q->pop=p;
    }
    QNode *out(LQueue *q){
    	QNode *p;
    	p=(QNode *)malloc(sizeof(QNode));
    	p=q->top->next;
    	q->top=p;
    	return p;
    }
    char a[1000][1000];
    int b[1000][1000];
    int main()
    {
    	LQueue *p;
    	QNode *zz;
    	creat(p);
    	int m,n;
    	while(scanf("%d%d",&m,&n)!=EOF){
    		int t=1;
    		getchar();
    		for(int i=0;i<m;i++){		
    			gets(a[i]);			
    		}
    		for(int i=0;i<m;i++)
    			for(int j=0;j<n;j++)
    				b[i][j]=0;
    		int x[4]={0,0,-1,1},y[4]={1,-1,0,0};
    		push(p,0,1);
    		while(p->top->next!=NULL){
    		zz=out(p);
    		int nx,ny;
    		for(int i=0;i<4;i++){
    			 nx=zz->data[0]+x[i];ny=zz->data[1]+y[i];
    			  if(a[nx][ny]=='B') {t=0;printf("Box is found at x=%d y=%d.\n",ny,nx);break;}
    	         if(nx>=0&&nx<n&&ny>=0&&ny<m&&b[nx][ny]==0&&a[nx][ny]==' '){
    			 push(p,nx,ny); 
    			 b[nx][ny]=1;
    			}		
    	    }	
    	}
    		if(p->top->next==NULL&&t==1) printf("Box is not found.\n");
    
    	}
    	return 0;
    }
    
    • 1

    数据结构/栈和队列/迷宫寻宝(软件1、2班)

    信息

    ID
    893
    时间
    1000ms
    内存
    12MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者