C++ 理解格

C++ 理解格,c++,algorithm,C++,Algorithm,我一直在研究一个计算机科学问题,在一次非常成功的第一次面试后,在第二次面试的代码测试中,这个问题把我难住了。否则,我会认为这是一个扣篮 基本上,我要在不到2小时的时间内,使用晶格单元来实现扫雷舰 如果是1X1,则有一个单元 如果是2X2,一个单元格有四个单元格(子单元格?),每个单元格都与父单元格双重链接。另外,这两个孩子彼此有双重联系。另外两个孩子也是 从一个子单元到另一个子单元的遍历意味着必须跳转到下一个chid链接(同级),或者首先遍历回父级,然后遍历到另一个子链接对集中的目标子级。(注意

我一直在研究一个计算机科学问题,在一次非常成功的第一次面试后,在第二次面试的代码测试中,这个问题把我难住了。否则,我会认为这是一个扣篮

基本上,我要在不到2小时的时间内,使用晶格单元来实现扫雷舰

如果是1X1,则有一个单元

如果是2X2,一个单元格有四个单元格(子单元格?),每个单元格都与父单元格双重链接。另外,这两个孩子彼此有双重联系。另外两个孩子也是

从一个子单元到另一个子单元的遍历意味着必须跳转到下一个chid链接(同级),或者首先遍历回父级,然后遍历到另一个子链接对集中的目标子级。(注意:树的想法只是我的想法,不是要求)

我的总体想法是建立一个模式创建机制,然后根据深度参数隐式地变得越来越大。一种树形结构似乎是最好的方法

这似乎很容易。但我就是无法理解模式创建逻辑:

有多个孩子的树结构很简单(oct树、四叉树、二叉树等),但想出一个优雅的系统,每当父母生下多个孩子时,孩子也只隐式地与特定的兄弟姐妹联系,这对我来说是一个难题。基本上,根据我的想法,根是格子图的中心,最远的子节点在边上

另外,晶格单元可能有许多方面我不了解。我在互联网上翻来翻去,试图找到一个彻底的解释,解释为什么或者如何使用它。我找到了一本关于这个主题的初级读物,它讲述了逻辑基础:偏序集、幂集、自反性和基于这些原理的晶格图,比如哈斯图

但是,这对我来说还不够好:没有C++,甚至没有伪代码例子。 我了解哈希表、链表、反向链表(递归/迭代)、二叉树(平衡/不平衡)、向量、字符串、反向等(所有基本知识)。三角,线性代数,四元数。一些计算和许多图形编程技巧/技术。我甚至白手起家地编写了两个游戏引擎,但我对简单的晶格问题一无所知。我很尴尬。我想尽可能多地学习格子,所以我再也不会像那样被烧死了。但是,我需要的文档很难找到

我正在寻找一个关于格子(如C++编写的算法)< <强> >的强的入门入门教程,希望能像我在21天内用山姆自己教C++的那样,为我(从初学者,向前)握住我的手。由于晶格似乎是一门中级到高级的学科,这可能是不可能的

如果不是教程,如果你们中的任何人能告诉我你们在这方面的知识,我将不胜感激


谢谢。

混淆源于对“晶格”一词的误导:在数学中,晶格是一个偏序集,其中每两个元素都有一个lub(最小上界)和一个glb(最大下界)。游戏“树”(节点是棋盘的状态,由于树的独特路径属性,移动的边缘显然没有任何glb),即使您加入通过不同移动序列达到的相同状态(在这种情况下,树成为有向图),如果从一个给定的状态可以到达两个不同的最终状态,则无法获得glb。我已经十年没有玩过扫雷舰了,但我的印象是这样结束游戏是可能的。因此,您需要考虑的底层数据结构是一个有向(可能是非循环)图,它有时在数学意义上是一个晶格(忽略边上的方向),但并不总是如此。

我不知道“扫雷者”与晶格单元有什么关系。我不知道格子格是什么,谷歌似乎也没有什么帮助,尤其是在扫雷游戏方面。你能澄清并提供一些链接/定义吗?您是指几何体中的晶格点吗?不管怎样,你为什么要在《扫雷舰》中关注这个问题?我试着用文字来说明这些“晶格单元”(假设只是简单的树结构)是如何相互关联的:2X2:C1-----C2\/\/R1/\/\C3-----C4,然后下一级,每个C也是一个R,还有3个额外的双链接。这也意味着每一个R也是一个C。游戏板是一系列相互链接的“晶格单元”:在上面的“2X2”中,每一条线都是双重链接的,允许来回遍历。我不理解晶格单元——因此我显然对这个问题一无所知。我可能实际上指的是几何学中的晶格点,但我不明白我指的是那个,因为我完全不知道这个问题。我不知道为什么“扫雷舰”在“晶格单元”方面是代码测试。可能是为了让这成为一个更难的测试。通常,如果有人让我设计扫雷舰,我会想到阵列。很明显,我对晶格单元(或晶格点)的理解比我原来想象的还要少。但是谢谢你的提示。我将阅读有关几何学和晶格点的知识。希望我能从中有所收获。