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 |
同一份代码c++AC。。。g++WA。。。求大神破解。。。#include <stdio.h> #include <queue> using namespace std; char map[42][42] = {}; struct node { int x; int y; int step; }; int move_x[4] = { 1, 0, -1, 0 }; int move_y[4] = { 0, -1, 0, 1 }; int getdir(int w, int h, int &startx, int &starty) { for(int i = 2; i <= h-1; i++) { if(map[i][1] == 'S') { startx = i; starty = 1; return 0; } if(map[i][w] == 'S') { startx = i; starty = w; return 2; } } for(int i = 2; i <= w-1; i++) { if(map[1][i] == 'S') { startx = 1; starty = i; return 1; } if(map[h][i] == 'S') { startx = h; starty = i; return 3; } } } int bfs(int w, int h) { bool visit[42][42] = {}; int startx, starty; getdir(w, h, startx, starty); queue<node> q; visit[startx][starty] = true; node first; first.x = startx; first.y = starty; first.step = 1; q.push(first); while(!q.empty()) { first = q.front(); q.pop(); for(int i = 0; i < 4; i++) { int nowx = first.x + move_x[i]; int nowy = first.y + move_y[i]; if(map[nowx][nowy] == 'E') { return first.step + 1; } if(map[nowx][nowy] != '#' && !visit[nowx][nowy]) { visit[nowx][nowy] = true; node tmp; tmp.x = nowx; tmp.y = nowy; tmp.step = first.step+1; q.push(tmp); } } } } int wall(int one_hand, int w, int h) { int nowx, nowy; int dir = getdir(w, h, nowx, nowy); int res = 1; while(map[nowx][nowy] != 'E') { dir = (dir + 4 + one_hand) % 4; while(map[nowx+move_x[dir]][nowy+move_y[dir]] == '#') { dir = (dir + 4 + one_hand*(-1)) % 4; } nowx += move_x[dir]; nowy += move_y[dir]; res++; } return res; } int main() { int n; scanf("%d", &n); for(int i = 0; i < n; i++) { int w, h; scanf("%d %d", &w, &h); for(int i = 1; i <= h; i++) { scanf("%s", &map[i][1]); } for(int i = 0; i< h+2; i++) { map[i][0] = map[i][w+1] = '#'; } for(int i = 0; i < w+2; i++) { map[0][i] = map[h+1][i] = '#'; } printf("%d %d %d\n", wall(-1, w, h), wall(1, w, h), bfs(w, h)); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator