10018: 某木的追杀

内存限制:128 MB 时间限制:1.000 S 提交:8 解决:2
评测方式:文本比较 命题人:

题目描述

某黄闯入了张翼德的长坂坡之阵,某木身为张翼德的活宝,在阵中某处追杀某黄,某木比某黄的移速快2倍。某木每追上某黄捅他一刀,然后休息5秒,让某黄再跑一会儿,某黄受伤了,某木很兴奋移速再快1倍(移速+1)。但某黄皮糙肉厚能抗住N刀,

给出某黄与某木的位置,以及出口位置。

长坂坡之阵是一个10*10的方阵,A为某黄的位置,B为某木的位置,C为出口的位置

(注:某黄始终1步/秒)

如果某黄成功活下来,就输出“你个畜生,下次鸡逼你”;

否 输出“**********”


##########
#.#......#
#.###..#..
#...#..#..
#.#.#..#.#
#.#.#....#
#.#.######
#.#......#
#.#.######
#........#



##########
#........#
#.#.###..#
#.#...#..#
#.#.###..#
#...#.#..#
#.#.#.#..#
#.#.#.####
#.....#..#
##########



##########
#..#.....#
#.##.###.#
#....#...#
#.####.#.#
#.#.....#.
#.###.###.
#.......#.
#.#######.
##########


##########
#..#......
#.##.###.#
#....#...#
#.####.#.#
#.#.#...#.
#.###.###.
#...#...#.
#.#######.
########..

##########
#..#....##
#.##.###.#
#....#..#.
#.####.#.#
#.#.....#.
#.###.###.
#.......#.
#.#######.
#########.






########## #........# #.#.###..# #.#...#..# #.#.###..# #...#.#..# #.#.#.#..# #.#.#.#### #.....#..# ##########



输入

一个10*10的方阵,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。

A为某黄的位置,B为某木的位置,C为出口的位置

以及能抗了N刀

输出

如果某黄成功活下来,就输出“你个畜生,下次鸡逼你”;

否 输出“**********”

样例输入 复制

#.#.#.#.#.
........##
A......#.B
######.##.
#####..##.
####..###.
C.........
##########
##########
##########
3

样例输出 复制

你个畜生,下次鸡逼你

提示

#include <iostream>
#include <queue>
#include <vector>
struct Point {

};
bool isValid(int x, int y, const std::vector<std::vector<char>>& grid) {

return x >= 0 && x < n && y >= 0 && y < m && grid[x][y] != '#';
}
int main() {
std::vector<std::vector<char>> grid(10, std::vector<char>(10));
Point playerPos, enemyPos, exitPos;
int N;
// 读取输入

for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {

if (grid[i][j] == 'A') {

} else if (grid[i][j] == 'B') {

} else if (grid[i][j] == 'C') {

}
}
}
std::cin>>N;
std::queue<Point> q;
std::vector<std::vector<int>> dist(10, std::vector<int>(10, -1));
// BFS搜索

while (!q.empty()) {


// 某木每追上某黄捅他一刀
if (curr.x == playerPos.x && curr.y == playerPos.y) {
N--;
if (N == 0) {

return 0;
}
}
// 某黄移动
if (isValid(curr.x - 1, curr.y, grid) && dist[curr.x - 1][curr.y] == -1) {

}
if (isValid(curr.x + 1, curr.y, grid) && dist[curr.x + 1][curr.y] == -1) {

}
if (isValid(curr.x, curr.y - 1, grid) && dist[curr.x][curr.y - 1] == -1) {

}
if (isValid(curr.x, curr.y + 1, grid) && dist[curr.x][curr.y + 1] == -1) {

}
}
return 0;
}