自制题《扫墓》欢迎挑战

1. 扫墓

题目背景

紧跟时事,zzy @周子寓 因故离世,他的同学们非常伤心,于是打算在国庆假期去扫zzy的墓。

题目描述

zzy的同学们在扫墓的路上遇到了一个 n\times m 的迷宫,迷宫里#是墙,.是空地,Z是zzy的墓,@表示同学们所在的位置。但是不幸的是,迷宫里出现了许多土匪,经过他们的所在格需要交一定的过路费,否则就无法通过那个格子。某数字(1~9)表示土匪格,数字表示要交的过路费,而zzy的同学们只带了 k 元钱,问能不能到zzy的墓,如果能,输出最小步数和这种走法剩余的钱,否则,如果是因为没钱,输出Have no money.,其他情况,输出Can't go.

输入格式

第一行三个整数 n,m,k ,表示迷宫的长和宽以及同学们带的钱。
2~n+1 行,每行 m 个字符,表示迷宫,含义如题目描述所示。

输出格式

如果能到达,输出最小步数和这种走法剩余的钱,中间用空格隔开。
否则,如果是因为没钱,输出Have no money.,其他情况,输出Can't go.

样例输入1

3 3 2
#Z#
1.#
#1@

样例输出1

3 1

样例输入2

3 3 2
#Z#
1##
#1@

样例输出2

Can't go.

样例输入3

3 3 2
#Z#
1.#
#3@

样例输出3

Have no money.

注:同学们只能往上下左右四个方向走。

欢迎挑战!

6 个赞

@周子寓

5 个赞

@周子寓

6 个赞

#include < iostream >
#include < queue >
char mz[100][100];
int vis[100][100], dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
struct Node {
int x, y, c;

};
std::queue q;

int main() {
int n, m, k, sx, sy;

scanf(“%d%d%d”, &n, &m, &k);
for (int i = 0; i < n; i ++ ) {
for (int j = 0; j < m; j ++ ) {
std::cin >> mz[i][j];
if (mz[i][j] == ‘@’) {
sx = i, sy = j;
}
}
}
q.push({sx, sy, 0}), vis[sx][sy] = 1;
while (!q.empty()) {
Node cur = q.front();

  q.pop();
  for (int i = 0, nx, ny, nc; i < 4; i ++ ) {
  	nx = cur.x + dx[i], ny = cur.y + dy[i], nc = cur.c;
  	if (nx < 0 || nx >= n || ny < 0 || ny >= m || vis[nx][ny] || mz[nx][ny] == '#') {
  		continue;
  	}
  	if (mz[nx][ny] >= '1' && mz[nx][ny] <= '9') {
  		nc += mz[nx][ny] - '0';
  		if (nc > k) {
  			printf("Have no money.");

  			return 0;
  		}
  	}
  	if (mz[nx][ny] == 'Z') {
  		printf("%d %d", cur.c + 2, k - nc);

  		return 0;
  	}
  	q.push({nx,  ny, nc});
  	vis[nx][ny] = 1;
  }

}
printf(“Can’t go.”);

return 0;
}

应该是个 \color{green}Wonderful\,\,\,Answer
改进建议:添加数据范围 :nerd_face:
{\LARGE 1\le n,m,k\le 114514}

4 个赞

哇,KYY,复活了竟然不找我

太伤心了

5 个赞

我勒个紧跟时事啊

5 个赞

我确实死了,但是没死透QwQ

6 个赞

神金把拿小号和大号讲相声

5 个赞

???

5 个赞

e
你才是**

KYY一般不用这个

4 个赞

这自制题发代码我就不管了哈

4 个赞

我可以证明,他俩都不是一个IP

4 个赞

包的

2 个赞

@阚宇阳 @杨竣喆
你™礼貌吗?
@林品逸
我还没死透呢

1 个赞

没事,你活在每一个论坛人的心中qwq

2 个赞

我不知道老师什么时候把我号注销,在那之前我先活一小下

1 个赞

啊,为啥要注销你啊,你也没有贾中正,金杭东他们一样刷分啊

2 个赞

你是真的zzy吗

1 个赞

不会注销的

我号为啥还活着 @Dalton

2 个赞

建议小号全封掉

2 个赞