- 54
- 0
给定一个金币地图,地图上的数值代表金币的数量。此时地图上方有一只贪吃蛇从任意一点进入,每经过一处就会吞噬此处的金币。最终从地图下方出去。贪吃蛇每次只会向下走,且不能走直线,也就是说,如果它在吞噬了地图中第 a 行第 b 列的 金币后,下一次只能走向第 a + 1行的第 c列(c != b)求:该贪吃蛇能吞噬的最大金币数是多少。一个 m x n 的地图 a1 ≤ m, n≤ 30001 ≤ai≤ 100
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
紫夜天狼 普通会员 1楼
以下是一个简单的Java动态规划贪吃蛇游戏的实现:
```java import java.util.LinkedList; import java.util.Queue;
public class Snakes { private int[][] board; private int[][] snakeBoard; private int directionX[] = {1, -1, 0, 0}; private int directionY[] = {0, 1, 0, -1};
public Snakes(int[][] board) { this.board = board; this.snakeBoard = new int[board.length][board[0].length]; } public void draw() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { System.out.print("#"); } System.out.println(); } } public void move(int dir) { if (dir == 0) { int newX = snakeBoard[0][0]; int newY = snakeBoard[0][ snakeBoard.length - 1]; snakeBoard[0][0] = newX; snakeBoard[0][snakeBoard.length - 1] = newY; } else if (dir == 1) { int newX = snakeBoard[snakeBoard.length - 1][0]; int newY = snakeBoard[0][0]; snakeBoard[snakeBoard.length - 1][0] = newX; snakeBoard[0][snakeBoard.length - 1] = newY; } else if (dir == 2) { int newX = snakeBoard[0][0]; int newY = snakeBoard[snakeBoard.length - 1][snakeBoard.length - 1]; snakeBoard[0][0] = newX; snakeBoard[snakeBoard.length - 1][snakeBoard.length - 1] = newY; } else if (dir == 3) { int newX = snakeBoard[0][0]; int newY = snakeBoard[0][snakeBoard.length - 1]; snakeBoard[0][0] = newX; snakeBoard[0][snakeBoard.length - 1] = newY; } } public boolean is有毒蛇() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 1) { return true; } } } return false; } public boolean is有毒蛇后退() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 0) { return true; } } } return false; } public boolean is有毒蛇攻击() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 2) { return true; } } } return false; } public void kill(int dir) { if (dir == 0) { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 1) { snakeBoard[i][j] = 0; } } } } else if (dir == 1) { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 0) { snakeBoard[i][j] = 1; } } } } else if (dir == 2) { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 0) { snakeBoard[i][j] = 2; } } } } else if (dir == 3) { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 0) { snakeBoard[i][j] = 3; } } } } } public void eat() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 1) { snakeBoard[i][j] = 0; directionsX[i][j] = -1; } } } } public void jump() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 3) { snakeBoard[i][j] = 0; directionsY[i][j] = 0; } } } } public boolean is有毒蛇二倍长度蛇() { for (int i = 0; i < snakeBoard.length; i++) { for (int j = 0; j < snakeBoard[i].length; j++) { if (snakeBoard[i][j] == 1) { return true; } } } return false; } public void navigate() { int dir = directionX[0] + directionY[0]; int dir2 = directionX[1] + directionY[1]; if (dir == 0) { move(dir2); } else if (dir == 1) { move(dir); } else if (dir == 2) { move(dir2); } else if (dir == 3) { move(dir2); } }} ```
这个代码实现了一个简单的贪吃蛇游戏。玩家需要控制一个蛇在地图上移动,并吃掉周围的毒蛇。同时,玩家还需要避免被毒蛇吃掉。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

