回答
既然你说的方块位于一个网格上,你可以尝试简单地在每个小图形上循环网格,看看相应的方块是否相等。如果是这样,你已经找到了一个简单数字的例子。
如果您想要更有趣,可以将简单数字编码为不相交的路径,即第一个简单图形可能是如下路径:从开始,向右移动。然后,对于大数字的每个方块,如果您可以完成路径并留在大数字的方块上,那么您已经找到了一个单个数字的实例。
假设大数字B的每一行都是由一系列比特组成的,假设最大的小数字可以包含在h-by-v网格中。 (在你的例子中,h = 3,v = 2)。使用h * v位(或者更多的例如4 * 2或4 * 4或8 * 2等等)为每个小图形做一个掩模M_s。在每个(x,y)处向下和向下移动一个h-by-v“窗口”,形成值M(x,y),该值表示在B中设置的位于当前窗口中的位。 (这个值可以递增计算,即通过移动窗口的每一行一位进入。)每当M_s & M(x,y) == M_s
,你已经发现了一个小数字s的发生。
注意,上述方法假设,在一个小的数字空白细胞是“无关”,即可以匹配在B.空白或非空白如果这种细胞不“不要不关心“,那么除了以前使用的非空白图之外,每个小图还需要一张空白补充图。该映射针对M(x,y)的补码进行测试。如果M(x,y)窗口的大小与小图相同,则可以将测试组合在一起并测试M_s^M(x,y) == 0
而不是M_s & M(x,y) == M_s
。如果B非常大并且稀疏,那么移动小图形模式并直接对B的单词进行测试可能会更快,而不是将B的比特变成M(x,y)的值;或预先计算移位的小图案阵列。
如果小数字的数量很大,请对它们进行排序,使得如果w中包含小数字u,则只要找不到u,就可以跳过对w的测试。同样,如果u和v都包含在w中,则只要找不到u或v中的任何一个,就可以跳过对w的测试。但是,如果第一段中概述的基本方法太慢,则应该只尝试像这样和以前的优化。
- 1. 在Prolog中的简单图搜索
- 2. 在Django简单搜索
- 3. 在Rails中单击图片时搜索
- 4. 简单搜索DataGrid
- 5. JQuery简单搜索
- 6. 简单搜索,acts_as_taggable
- 7. 简单的搜索引擎在Django。在html内容中搜索
- 8. 在MYSQL中简单搜索数据
- 9. 搜索地图清单
- 10. 在搜索视图中更改默认搜索图标位置
- 11. 在Drupal中搜索视图
- 12. 在地图中搜索子地图
- 13. Django的 - 简单的搜索
- 14. Django的简单的搜索
- 15. 简单的asp.net搜索
- 16. MySQL简单搜索查询
- 17. 简单/高级搜索
- 18. 简单搜索小网站
- 19. 简单文本搜索Bash
- 20. 简单的轨道搜索
- 21. 简单的HTML搜索框
- 22. Heroku的简单的搜索
- 23. 简单的js搜索
- 24. 如何在搜索图标的点击获得搜索表单
- 25. 将图标对齐到简单的搜索栏
- 26. 从google图片搜索一个图片搜索android中的单词
- 27. 较大的iTunes搜索API图像
- 28. primeng大搜索文本框与搜索图标
- 29. 在YT API简单YouTube搜索查询
- 30. 简单在目标c搜索tableview
我假设你想在“大图”中找到“小图”的出现?对?你想找到完全匹配吗? – ElKamina 2012-01-13 21:34:25
@ElKamina >>我有5个“简单数字”,我可以使用我的“大数字”形式的“简单数字”。 **正方形位于网格上**示例数字:http://img708.imageshack.us/img708/9948/figuresk.jpg – 0x131313 2012-01-13 22:35:43
您在寻找* a *匹配还是*全部*匹配? – templatetypedef 2012-01-13 22:44:35