c – 了解格子
我一直在研究一个计算机科学问题,这个问题在第一次面试后非常成功地进行了第二次面试代码测试.否则,我会认为这是一个扣篮.
基本上,我是在2小时内使用格子细胞实施扫雷. 如果它是1X1,则有一个单元格. 然后,如果它是2X2,则一个细胞有四个细胞(儿童?),每个细胞与父母双重链接.此外,这2个孩子彼此双重联系.另外两个孩子也是如此. 从子单元格遍历到另一个子单元格意味着必须要么跳转到下一个chid链接(兄弟姐妹),要么首先遍历父项,然后再遍历到另一个子链接对集合中的目标子项. (注意:树的想法只是我的想法,不是要求) 我的一般想法是建立一个模式创建机制,然后根据深度参数隐式地变得越来越大.一种树状结构似乎是最好的方法. 这似乎很容易.但我无法理解模式创建逻辑: 具有多个孩子的树结构很容易(八叉树,四叉树,二叉树等),但是提出了一个优雅的系统,每当父母产生多个孩子时,孩子们也只隐含地链接到特定的兄弟姐妹.对我来说是一个令人头疼的事.所以,基本上,根据我的想法,根是格子图的中心,最远的子节点在边缘. 此外,格子细胞可能有许多方面我不明白.我在互联网上挖掘,试图找到一个基础解释,说明为什么或如何有用.我在这个主题上找到了一个关于逻辑基础的初级读物:基于这些原理的部分有序集,幂集,反射性和格子图,例如Hasse图. 但是,对我来说这仍然不够好:没有C甚至是伪代码示例. 我理解哈希表,链表,反转链表(递归/迭代),二叉树(平衡/不平衡),向量,字符串,反转等(所有基本的基础知识). Trig,线性代数,四元数.一些计算.以及大量的图形编程技巧/技巧.我甚至从头开始编写了两个游戏引擎,但简单的格子问题让我感到震惊.我很尴尬.我想尽可能多地学习格子,所以我再也不会像那样被烧掉了.但是,我需要的文档很难找到. 我正在寻找一个关于格子主题的好的入门/教程(因为它与编写C算法有关) – 希望能够为我(从初学者开始)向我伸出援助之手,就像典型的Sam在21天内自学C一样,或者其他的东西.由于格子似乎是非常先进的主题的中间,这可能是不可能的. 如果不是教程,如果你们中的任何人能够给我关于这个主题的知识,我将非常感激. 谢谢. 解决方法
混淆源于对格子这个词的误导性使用:在数学中,格子是一个poset,其中每两个元素都有一个lub(最小上界)和一个glb(最大下界).游戏’树'(节点是棋盘的状态,由于树的独特路径属性,移动显然没有任何glb的边缘),即使你加入通过不同移动顺序到达的相同状态(在这种情况下)如果从给定的状态,你可以达到两个不同的最终状态,那么树就会变成有向图.十年来我没有玩过扫雷,但我的印象是有可能以这种方式结束游戏.因此,您需要考虑的基础数据结构是有向的(可能是非循环的)图形,有时在数学意义上是一个点阵(忽略边缘上的方向),但并非总是如此.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |