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 |
根据一大牛的dir=(dir+3)%4的思想AC了#include<iostream> using namespace std; int direction[4][2]={1,0,0,1,0,-1,-1,0}; int ldire[8][2]={0,-1,-1,0,0,1,1,0,0,-1,-1,0,0,1,1,0}; int rdire[8][2]={0,1,-1,0,0,-1,1,0,0,1,-1,0,0,-1,1,0}; char map[40][40]; int m,n,sx,sy,ex,ey; int tqueue[160]; int front,rear,size; void queueinit() { front=rear=-1; size=0; } int isempty() { return size<=0; } void enqueue(int num) { tqueue[(++front)%160]=num; size++; } int dequeue() { return (tqueue[(++rear)%160]); size--; } void init() { int i,j; cin>>n>>m; for(i=0;i<m;i++) for(j=0;j<n;j++) { cin>>map[i][j]; if(map[i][j]=='S') {sx=i;sy=j;map[i][j]='.';} if(map[i][j]=='E') {ex=i;ey=j;map[i][j]='.';} } } int isin(int i,int j) { return (i>=0&&i<m&&j>=0&&j<n); } void run() { int distance,dir; int pos,xpos,ypos,newx,newy,i; init(); // left distance=1; dir=0; newx=sx; newy=sy; while(newx!=ex||newy!=ey) { dir=(dir+3)%4; for(i=dir;i<dir+4;i++) { newx=newx+ldire[i][0]; newy=newy+ldire[i][1]; if(isin(newx,newy)&&map[newx][newy]=='.') { dir=i; distance++; break; } newx=newx-ldire[i][0]; newy=newy-ldire[i][1]; } } cout<<distance<<" "; //right distance=1; dir=0; newx=sx; newy=sy; while(newx!=ex||newy!=ey) { dir=(dir+3)%4; for(i=dir;i<dir+4;i++) { newx=newx+rdire[i][0]; newy=newy+rdire[i][1]; if(isin(newx,newy)&&map[newx][newy]=='.') { dir=i; distance++; break; } newx=newx-rdire[i][0]; newy=newy-rdire[i][1]; } } cout<<distance<<" "; // direction queueinit(); enqueue(ex*40+ey); while(!isempty()&&map[sx][sy]=='.') { pos=dequeue(); xpos=pos/40; ypos=pos%40; for(i=0;i<4;i++) { newx=xpos+direction[i][0]; newy=ypos+direction[i][1]; if(isin(newx,newy)&&map[newx][newy]=='.') { map[newx][newy]+=map[xpos][ypos]-'.'+1; enqueue(newx*40+newy); } } } cout<<(int)(map[sx][sy]-'.'+1)<<endl; } int main() { int times; cin>>times; while((--times)>=0) run(); return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator