6044: 울 음 과 보좌
1662 단어 poj
#include
#include
#include
#include
#include
#include
using namespace std;
struct State {
int x, y, k, t;
State() {};
State(int xx, int yy, int kk, int tt) :x(xx), y(yy), k(kk), t(tt) {};
};
queue q;
bool flag[210][210][11];
char maze[210][210];
int M, N, T,endi,endj;
int to[4][2] = { 0,1,1,0,0,-1,-1,0 };
int main() {
scanf("%d%d%d
", &M, &N, &T);
for (int i = 0;i < M;i++) {
for (int j = 0;j < N;j++) {
scanf("%c", &maze[i][j]);
if (maze[i][j] == '@') {
q.push(State(i, j, T, 0));
}
if (maze[i][j] == '+') {
endi = i;
endj = j;
}
}
getchar();
}
bool success = false;
while (!q.empty()) {
State s = q.front();
if (s.x == endi && s.y == endj) {
printf("%d", s.t);
success = true;
break;
}
for (int t = 0;t < 4;t++) {
int x = s.x + to[t][0];
int y = s.y + to[t][1];
if (x >= 0 && x < M && y >= 0 && y < N) {
if (maze[x][y] == '#'&&s.k <1) {
continue;
}
int k = maze[x][y] == '#' ? s.k - 1 : s.k;
if (!flag[x][y][k]) {
flag[x][y][k] = 1;
q.push(State(x, y, k, s.t + 1));
}
}
}
q.pop();
}
if (!success) {
printf("-1");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ3071: Football(확률 DP)Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2n. After n rounds, only one team...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.