Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么会presentation error?display the maze as shown in the example above and?原来的图也要打印吗??#include<stdio.h> #define MAX 12 struct cell { int n; int dir[4]; int visited; int sequence; }maze[MAX+2][MAX+2];//初始化是需要 int stack[MAX*MAX][2]; int top; int move[4][2]; /* 1 west 0 2 east 3 south */ int height,width,sr,sc,gr,gc; int init() { int i,j; scanf("%d%d%d%d%d%d",&height,&width,&sr,&sc,&gr,&gc); if(height==0) return 0; for(i=1;i<=height;i++) for(j=1;j<=width;j++) { scanf("%d",&maze[i][j].n); maze[i][j].sequence=0; maze[i][j].visited=0; switch(maze[i][j].n) { case 0: maze[i][j].dir[2]=0; maze[i][j].dir[3]=0; maze[i][j+1].dir[0]=0; maze[i+1][j].dir[1]=0; break; case 1: maze[i][j].dir[3]=0; maze[i+1][j].dir[1]=0; maze[i][j].dir[2]=1; maze[i][j+1].dir[0]=1; break; case 2: maze[i][j].dir[3]=1; maze[i+1][j].dir[1]=1; maze[i][j].dir[2]=0; maze[i][j+1].dir[0]=0; break; case 3: maze[i][j].dir[2]=1; maze[i][j].dir[3]=1; maze[i][j+1].dir[0]=1; maze[i+1][j].dir[1]=1; break; } if(i==1) maze[i][j].dir[1]=1; if(i==height) maze[i][j].dir[3]=1; if(j==1) maze[i][j].dir[0]=1; if(j==width) maze[i][j].dir[2]=1; } return 1; } void setmove() { move[0][0]=move[2][0]=0; move[0][1]=-1;move[2][1]=1; move[1][1]=move[3][1]=0; move[1][0]=-1;move[3][0]=1; } void getpath() { int ok; int x,y,nx,ny,i,k; setmove(); stack[0][0]=sr; stack[0][1]=sc; maze[sr][sc].sequence=1; maze[sr][sc].visited=1; for(top=0;top<width*height;) { ok=0; for(i=0;i<4;i++) { x=stack[top][0]; y=stack[top][1]; if(maze[x][y].dir[i]==0) { nx=x+move[i][0]; ny=y+move[i][1]; if(maze[nx][ny].visited==1) continue; else maze[nx][ny].visited=1; top++; stack[top][0]=nx; stack[top][1]=ny; ok=1; } if(nx==gr&&ny==gc) { for(k=0;k<=top;k++) maze[stack[k][0]][stack[k][1]].sequence=k+1; return; } if(ok) break; } if(!ok) top--; } } void printmaze() { int i,j; printf("+"); for(j=1;j<=width;j++) printf("---+"); printf("\n"); for(i=1;i<=height;i++) { printf("|"); for(j=1;j<=width;j++) { if(maze[i][j].sequence&&maze[i][j].visited) printf("%3d",maze[i][j].sequence); else if(!maze[i][j].sequence&&maze[i][j].visited) printf("???"); else if(!maze[i][j].sequence&&!maze[i][j].visited) printf(" "); else ; if(maze[i][j].dir[2]==0) printf(" "); else printf("|"); } printf("\n"); printf("+"); for(j=1;j<=width;j++) if(maze[i][j].dir[3]==0) printf(" +"); else printf("---+"); printf("\n"); } } int main() { int i=0; while(init()) { i++; printf("Maze %d\n",i); getpath(); printmaze(); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator