〇 X 〇 〇 〇
〇 〇 〇 〇 〇
〇 〇 〇 〇 〇
〇 〇 〇 〇 〇
〇 〇 〇 〇 〇
不过X点,把所有的圈连起来,不能重复,不能斜连,不能跳圈
本人用了游戏寻路算法做了一个程序,没有解出答案,如果差一个圈的有1064个解法。欢迎高手们解答
import java.util.ArrayList; /** * @author xtiger (xtiger@microsoul.com) 2015-09-09 23:39 */ public class Game { private static int[][] t = new int[7][7]; //记录圈子,外围多加一圈,免得判断 ,0:可以走,1:走过,2:不可走 private static int r[] = new int[25]; //记录结果 private static int i = 2; //当前圈子的x private static int j = 1; //当前圈子的y private static int idx = 0; private static int bb = 1; private static ArrayList<String> die = new ArrayList<String>(); //记录走不通的路线 public static void main(String[] args) { for (int i = 0; i < 7; i++) { for (int j = 0; j < 7; j++) { if (i == 0) { t[i][j] = 2; } if (i == 6) { t[i][j] = 2; } if (j == 0) { t[i][j] = 2; } if (j == 6) { t[i][j] = 2; } } } t[1][2] = 2; t[1][1] = 2; t[2][1] = 2; r[idx++] = 11; r[idx++] = 21; while (true) { if (up() == 1) continue; if (right() == 1) continue; if (down() == 1) continue; if (left() == 1) continue; back(); int b = 0; for (int x = 1; x <= 5; x++) { for (int y = 1; y <= 5; y++) { b += t[x][y]; } } if (b == 26) { echo1(); continue; } if (b == 28) break; } System.out.println("GOOOOOOOOOOD---------------"); echo1(); } private static int up() { if (checkDie((i - 1) * 10 + j)) { return 0; } if (t[i - 1][j] == 0) { r[idx++] = (i - 1) * 10 + j; t[i - 1][j] = 1; i--; return 1; } return -1; } private static int right() { if (checkDie(i * 10 + j + 1)) { return 0; } if (t[i][j + 1] == 0) { r[idx++] = i * 10 + j + 1; t[i][j + 1] = 1; j++; return 1; } return -1; } private static int down() { if (checkDie((i + 1) * 10 + j)) { return 0; } if (t[i + 1][j] == 0) { r[idx++] = (i + 1) * 10 + j; t[i + 1][j] = 1; i++; return 1; } return -1; } private static int left() { if (checkDie(i * 10 + j - 1)) { return 0; } if (t[i][j - 1] == 0) { r[idx++] = i * 10 + j - 1; t[i][j - 1] = 1; j--; return 1; } return -1; } private static boolean checkDie(int next) { return die.contains(getPath(idx) + next + "/"); } private static boolean back() { String p = getPath(idx); if (!die.contains(p)) die.add(getPath(idx)); if (idx > 0) { idx--; if (t[r[idx] / 10][r[idx] % 10] == 1) { t[r[idx] / 10][r[idx] % 10] = 0; } } if (idx > 0) { i = r[idx - 1] / 10; j = r[idx - 1] % 10; return false; } return true; } private static String getPath(int pos) { StringBuilder s = new StringBuilder(); for (int x = 0; x < pos; x++) { s.append(r[x]).append("/"); } return s.toString(); } private static String getPos(int v) { for (int x = 1; x <= 25; x++) { if (r[x - 1] == v) return "" + (x + 10); } return " "; } private static void echo1() { System.out.println(); System.out.println((bb++) + ". -----------"); for (int x = 1; x <= 5; x++) { for (int y = 1; y <= 5; y++) { System.out.print(getPos(10 * x + y) + " "); } System.out.println(); } } }
如果差一个圈的有1064个解法,展示一部分:
1. ----------- 11 15 16 17 12 13 14 18 31 30 25 24 19 32 29 26 23 20 33 28 27 22 21 2. ----------- 11 15 16 17 12 13 14 18 31 32 25 24 19 30 33 26 23 20 29 28 27 22 21 3. ----------- 11 15 16 17 12 13 14 18 33 32 25 24 19 30 31 26 23 20 29 28 27 22 21 4. ----------- 11 15 16 17 12 13 14 18 29 28 25 24 19 30 27 26 23 20 31 32 33 22 21
相关推荐
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料...华为软件精英挑战赛采用模拟退火算法+首次适应算法寻找最优化放置虚拟机源码.zip
游戏开发中的经典算法是编程实践中不可或缺的部分,它们是解决问题的核心工具,通过精心设计的步骤来指导计算机执行任务。算法的设计和实现是程序设计的核心,它将抽象思维转化为计算机可理解的语言。在这里,我们将...
非常优秀的棋牌类游戏源码,包含AI及机器人的难度调节算法
遗传算法运用了生物进化理论的知识来寻找问题最优解的算法,算法的遗传进化过程分选择,交叉和变异操作,其中选择操是非常关键的步骤,把更适应的基于组遗传给下一代。详细介绍链接 DbScan 基于空间密度聚类算法。...
图算法是处理网络结构和关系的强大工具,广泛应用于网络分析、路由规划、社交网络和游戏设计等领域。以下是一些重要的图算法: 1. 广度优先搜索(BFS):用于寻找最短路径或遍历无权图,例如求解两节点间的最短路径...
A*(A-star)算法是一种在图形搜索中用于路径寻找的优化算法,广泛应用于游戏开发、地图导航等领域。它是Dijkstra算法的一种改进版本,引入了启发式信息来提高搜索效率,能够在保证找到最短路径的同时减少计算量。 ...
游戏算法电子书 感觉不错 分享给大家 游戏核心算法编程内幕.pdf
模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...
非常好的一本关于游戏算法设计的书!
, 《写给大家看的算法书》对于理解信息处理的基础——算法而言,是一本非常优秀的入门读物。作者采用大量生动的类比,配合简洁易懂的配图,深入浅出地讲解算法,极大地拉近了读者与算法的距离。通读全书,读者可以...
该算法的基本思想是模拟蚂蚁在寻找食物时留下的化学物质 trajectory,通过这种方式来寻找最优路径。蚁群算法的优点是具有较强的鲁棒性,能够适应复杂的路径规划问题。 蚁群算法的实现步骤如下: 1. 初始化蚂蚁的...
这两种算法都是基于自然界中的群体行为模式来寻找全局最优解的搜索算法。 **灰狼优化算法(GWO)** 是一种受灰狼社会行为启发的优化算法。在灰狼种群中,阿尔法(α)、贝塔(β)和德尔塔(δ)三只狼是领导者,负责...
#### 如何寻找最长回文子串、运用贪心思想玩跳跃游戏 - 提供用贪心算法解决特定问题的思路和方法。 #### 如何k个一组反转链表、判定括号合法性 - 介绍链表操作技巧,以及用栈来判断括号合法性。 #### 如何寻找缺失...
连连看算法是連連看游戏中的一种核心算法,该算法主要解决了游戏中连通两个点的问题。该算法的要求主要有两个:一是要连接的两点上的图形相同,二是两点间存在一条没有障碍的路线,并且折点不超过两个。 连连看算法...
而搜索算法,如二分查找和广度优先搜索,则是在大规模数据中寻找特定元素或路径的利器。此外,图论中的算法,如Dijkstra最短路径算法和Floyd-Warshall所有对最短路径算法,对于网络优化和路径规划有着重要作用。 ...
蚁群算法(ant colony optimization)又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。其主要特点就是:通过正反馈、分布式协作来寻找最优路径。这是一种基于种群寻优的启发式搜索算法。 遗传算法 遗传...
接着,我们来看Dijkstra算法。这是一种经典的图论算法,用于寻找图中两个节点之间的最短路径。Dijkstra算法基于贪心策略,每次扩展当前最短路径节点,直到到达目标节点。虽然Dijkstra算法在处理大规模网络时效率较低...
通过遗传算法,求解函数的最优解,其特点是,运算速度快,运行结果精确
常见的磁盘调度算法有先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)和循环扫描算法(CSCAN)等。 先来先服务算法(FCFS) 先来先服务算法(FCFS)是一种最简单的磁盘调度算法。该算法...
**DStar算法详解** 在计算机科学和人工智能领域,路径搜索是一个关键问题,特别是在导航系统、游戏AI和机器人路径...理解和掌握DStar算法对于从事AI、机器人学或者游戏开发等相关工作的专业人士来说是非常有价值的。