puzzle(0913)Orac、Q游戏

目录

Orac

力扣 490. 迷宫

力扣 505. 迷宫 II

智力游戏——Q游戏系列

15Q游戏(1)27(2)43(3)

58Q游戏(4)73(5)85(6)98(7)  

109Q游戏(8)123/133/146/165/172/178/184(9-15)

191Q游戏(16)197/203/209/214/219/225/230(17-23)

4399 Q游戏


Orac

Orac是要把所有方块推到目标位置。

这个游戏制作挺精良的,难度挺大的。

(7)

(8)

 

(11)

有黄色特效的格子是陷阱,只要经过就定住再也出不来了。

(12)

 

(13)

 

(14)

(17)

 

 (21)

黄色的不一定是纯陷阱,也有可能既是陷阱又是目的地。

 (26)

 蓝色特效的格子是一次性墙,用一次就会变成普通格子。

同时,这一关边界的墙没了(只有最下面中间一点点墙还留着),往边界滑动就直接滑出去从而失败了。

(32)

加入了2个方块绑定在一起的机制。

 

(42)

这一关就是纯粹的调奇偶性。

(44)

 4组两两绑定的块。

 

力扣 490. 迷宫

由空地(用 0 表示)和墙(用 1 表示)组成的迷宫 maze 中有一个球。球可以途经空地向 上、下、左、右 四个方向滚动,且在遇到墙壁前不会停止滚动。当球停下时,可以选择向下一个方向滚动。
给你一个大小为 m x n 的迷宫 maze ,以及球的初始位置 start 和目的地 destination ,其中 start = [startrow, startcol] 且 destination = [destinationrow, destinationcol] 。请你判断球能否在目的地停下:如果可以,返回 true ;否则,返回 false 。

你可以 假定迷宫的边缘都是墙壁(参考示例)。

示例 1:


输入:maze = [[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]], start = [0,4], destination = [4,4]
输出:true
解释:一种可能的路径是 : 左 -> 下 -> 左 -> 下 -> 右 -> 下 -> 右。
示例 2:


输入:maze = [[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]], start = [0,4], destination = [3,2]
输出:false
解释:不存在能够使球停在目的地的路径。注意,球可以经过目的地,但无法在那里停驻。
示例 3:

输入:maze = [[0,0,0,0,0],[1,1,0,0,1],[0,0,0,0,0],[0,1,0,0,1],[0,1,0,0,0]], start = [4,3], destination = [0,1]
输出:false
 

提示:

m == maze.length
n == maze[i].length
1 <= m, n <= 100
maze[i][j] is 0 or 1.
start.length == 2
destination.length == 2
0 <= startrow, destinationrow <= m
0 <= startcol, destinationcol <= n
球和目的地都在空地上,且初始时它们不在同一位置
迷宫 至少包括 2 块空地

class Solution {
public:
	int id(int x, int y)
	{
		return x * col + y;
	}
	bool inBoard(int r, int c)
	{
		return r >= 0 && r < row && c >= 0 && c < col;
	}
	bool dfs(const vector<vector<int>>& grid, vector<int> s, vector<int> d)
	{
        if(s[0]==d[0]&&s[1]==d[1])return true;
		if (m[id(s[0], s[1])])return false;
		m[id(s[0],s[1])] = 1;
		int dx4[] = { 0,0,1,-1 };
		int dy4[] = { 1,-1,0,0 };
		for (int i = 0; i < 4; i++) {
			int dx = dx4[i], dy = dy4[i];
			int r = s[0], c = s[1];
			while (inBoard(r + dx, c + dy) && grid[r + dx][c + dy] == 0)r += dx, c += dy;
			if (dfs(grid, vector<int>{r, c}, d))return true;
		}
		return false;
	}
	bool hasPath(vector<vector<int>>& grid, vector<int>& start, vector<int>& destination) {
		row = grid.size();
		col = grid[0].size();
		m.clear();
		return dfs(grid, start, destination);
	}
	int row;
	int col;
	map<int, int>m;
};

力扣 505. 迷宫 II

单源最短路径

智力游戏——Q游戏系列

智力游戏中的关卡,所有关卡规则都一样。

15Q游戏(1)27(2)43(3)

15Q游戏(1)

步骤分解:

27(2)

步骤分解:

43(3)

步骤分解:

58Q游戏(4)73(5)85(6)98(7)  

 58Q游戏(4)

步骤分解:

73(5)

步骤分解:

85(6)

步骤分解:

98(7)

步骤分解:

109Q游戏(8)123/133/146/165/172/178/184(9-15)

 109Q游戏(8)

123(9)

133(10)

146(11)

165(12)

172(13)

178(14)

184(15)

191Q游戏(16)197/203/209/214/219/225/230(17-23)

191(16)

197(17)

203(18)

209(19)

214(20)

219(21)

225(22)

230(23)

4399 Q游戏

https://www.4399.com/flash/23339_3.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值