Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

代码!

Posted by chenxuan123456789 at 2012-08-02 18:57:20 on Problem 3984
#include <stdio.h>
#define M 1024
typedef struct queue
{
	int x,y,pre;
}q;
q p[M];
typedef struct stack 
{
	int x,y;
}s;
s sp[M];
int maze[5][5];
int r,c;
int head,tail;
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
void print()
{
	int i,j;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
			printf("%d",maze[i][j]);
		printf("\n");
	}
}
void init()
{
	int i,j;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
			scanf("%d",&maze[i][j]);
	}
//	print();
}

void path()
{
	int t=tail,s=0,i;
	while(p[t].pre!=-1)
	{
		sp[s].x=p[t].x;
		sp[s].y=p[t].y;
		t=p[t].pre;
		s++;
	}
   for(i=s;i>=0;i--)
   printf("(%d, %d)\n",sp[i].x,sp[i].y);
}   
void bfs(int x,int y)
{
	int i,tempx,tempy;
	head=0;
	tail=0;
	p[head].x=x;
	p[head].y=y;
	p[head++].pre=-1;
	maze[x][y]=1;
	while(tail<=head)
	{
		if(p[tail].x==4&&p[tail].y==4)
		break;
		else
		{
			for(i=0;i<4;i++)
			{
				tempx=p[tail].x+dx[i];
				tempy=p[tail].y+dy[i];
				if(tempx>=0&&tempx<=4&&tempy>=0&&tempy<=4&&!maze[tempx][tempy])
				{
					maze[tempx][tempy]=1;
					p[head].x=tempx;
					p[head].y=tempy;
					p[head++].pre=tail;
				}
			}
			tail++;
		}
	}
	path();
}	
int main()
{
    init();
	bfs(0,0);
	return 1;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator