| ||||||||||
| 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