This topic created in 4455 days ago, the information mentioned may be changed or developed.
给定一个文件,里面有10000个数字,数字只从{1,2,3,4}里面选取。这些数字排成100*100的网格。找出里面序列 1234 以顺时针出现的次数(闭环)。
例子:
3 3 1 2
1 2 3 4
4 3 2 3
1 1 1 4
比如这个例子里面,1234 以顺时针出现了两次。
我能想到的只能是遍历了...大家有什么好的思路么?
Supplement 1 Mar 6, 2014 谢谢大家的回复呀。
决定看下RabinKarp algorithm,感觉可以用在这种情况。
22 replies 1970-01-01 08:00:00 +08:00  | | 1 cxe2v Mar 5, 2014 不在一行的顺时针也算么? |
 | | 4 ETiV Mar 5, 2014 * * * * 1 2 * * 3 4 * * * * * *
我肉眼只看到了这一个呀, 那个呢? |
 | | 5 alsotang Mar 5, 2014 遍历的复杂度是 O(n)的吧,还能少? |
 | | 6 lsylsy2 Mar 5, 2014 100*100……遍历也很快吧? |
 | | 7 bleutee Mar 5, 2014 @ ETiV * * * * * * * * * * 2 3 * * 1 4 |
 | | 9 a591826944 Mar 5, 2014 1 从 行里面 遍历相邻的两个数字 相加 等于 3/5/7 如果是 记位置,看下一行这个位置的两个数字 是不是能组成符合规则的,如果不是 下一行的这个位置 就不用看了 肯定不行 这样就不用便利全部的矩阵了 |
 | | 12 binux Mar 5, 2014 1 顺时针,还要闭环,总共就4种可能,这太简单了吧。。 读一行,缓存下一行,如果第一行相邻两个数字满足,判断下一行是否一样满足。O(n)而已
要不我们来改一下,只要4个数字相连(4/8个方向),能组成1234即可,有多少种。 |
 | | 14 shibo501c Mar 5, 2014 感觉可以预处理一下,数组存起来,可以计算四个相邻位置的和,如果是10,就存起来,然后再统一看下是不是顺序的,这样会优化一些吧 |
 | | &nsp; 15 Sdhjt Mar 5, 2014 还是遍历吧,反正复杂度不高 |
 | | 16 hongdengdao Mar 5, 2014 开始只要找通过找到1的上边或者右边为2的位置,在这些为2的位置对应的顺时针位置。。。直到找到4 |
 | | 18 acros Mar 5, 2014 最好的情况一时想不到,因为这个要求2x2的,肯定能跳着好些 |
 | | 19 laoyang945 Mar 6, 2014 我遇到一个相同的题目,不过是在10000*10000的矩阵里面找一个3*3 的模式出现的次数,该模式正中央那格无需匹配 |