由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - [合集] 一道关于电话pad的面试题
相关主题
一道关于电话pad的面试题Amazon一道面试题magic number
[合集] 贡献一道it面试题一道面试题,向本版求教一下。
一道面试题问一道面试题,现在好像很流行这种题
有些今年1月左右的帖子找不到了,是删除了么?签了NDA的面试题可以拿来问别人吗?
寻一道A面试题,呵呵问一道google的面试题。
一道有意思的面试题 (18禁)请教一道面试题
求问一道面试题pure storage一道面试题
一道很难的面试题的解法一道G面试题
相关话题的讨论汇总
话题: genpass话题: now话题: ret话题: next话题: return
进入JobHunting版参与讨论
1 (共1页)
S**I
发帖数: 15689
1
☆─────────────────────────────────────☆
pore (坚持不懈) 于 (Tue May 15 00:11:28 2012, 美东) 提到:
利用电话按键1-9产生password,必须swipe产生password,跟android很像,密码没有
重复的数字。
比如
1 2 3
4 5 6
7 8 9
可以从1出发到5,到9,到6, 到3, 产生密码15963.
但是不可以从1直接到9,因为1跟9不相连。
也不可以是1421,因为任何数字在一个密码中只能用一次。
问题是:用这种方法一共可以产生多少个passwords?
如果是nxn square,能够有多少个swipable的按键组合?
☆─────────────────────────────────────☆
tradertobe (builder) 于 (Tue May 15 00:24:00 2012, 美东) 提到:
Look like DFS.
☆─────────────────────────────────────☆
realife (leda) 于 (Tue May 15 00:45:23 2012, 美东) 提到:
应该可以。从1和2分别出发,密码总数乘4,加上从5出发的密码数。
不知道思想对不对?

☆─────────────────────────────────────☆
pore (坚持不懈) 于 (Tue May 15 00:59:56 2012, 美东) 提到:
有点像,但是不完全一样。比如你用了147.....,你还可以再走157... 虽然7已经visit
过了。
1 2 3
4 5 6
7 8 9
☆─────────────────────────────────────☆
pore (坚持不懈) 于 (Tue May 15 01:01:20 2012, 美东) 提到:
我也是这么想的,但是从1出发的怎么计算呢?跟DFS还不一样,不同的path可以有重复
的节点。
☆─────────────────────────────────────☆
realife (leda) 于 (Tue May 15 01:07:06 2012, 美东) 提到:
我在想是不是可以用递归,比如计算从1出发时,对2,4,5递归,不用对节点
mark flag,只要确保没有重复数字就行了,比如用个set存一下已经访问的数字。
反正顺序不同的密码是不同的。
☆─────────────────────────────────────☆
pore (坚持不懈) 于 (Tue May 15 01:14:17 2012, 美东) 提到:
用递归的话,最大的问题,就是计算从3出发的时候,又会对2,5,6递归,其中2和5已
经在计算从1出发的时候递归过了,所以会有重复的节点。
☆─────────────────────────────────────☆
realife (leda) 于 (Tue May 15 01:16:43 2012, 美东) 提到:
所以说要用个set,来记录这条path经过的节点。
☆─────────────────────────────────────☆
pore (坚持不懈) 于 (Tue May 15 01:22:45 2012, 美东) 提到:
能具体说说吗?
我总觉得递归有点问题,
比如从1出发,递归2,4,5,
从3出发,递归2,5,6。
从3 出发,我们还需不需要递归2,5,如果不要的话,5-1显然是个新的节点。
☆─────────────────────────────────────☆
realife (leda) 于 (Tue May 15 01:38:49 2012, 美东) 提到:
一会有空的话写个code验证一下我的想法再来update。
不行就明天再写code吧,至少可以躺床上静想一下,呵呵。
☆─────────────────────────────────────☆
flier0 (flier) 于 (Tue May 15 01:48:24 2012, 美东) 提到:
感觉用DFS可以啊,不过是在每进入一层时把该点标记一下,然后退出这一层时再对该
点撤销标记。
☆─────────────────────────────────────☆
peking2 (myfacebook) 于 (Tue May 15 02:13:57 2012, 美东) 提到:
DFS不行吗?
☆─────────────────────────────────────☆
realife (leda) 于 (Tue May 15 03:24:29 2012, 美东) 提到:
从1开始共有132个密码,从2有146个,从5有96个,
所以总共应该有132*4+146*4+96,居然有这么多。
用的是递归,没有用纯粹的DFS。
☆─────────────────────────────────────☆
flier0 (flier) 于 (Tue May 15 14:07:45 2012, 美东) 提到:
从1开始我算出来是1047条。。2开始886条。。5开始665条。。
你是把哪些当作重复了
这是我的code:
void print(int* set, int size) {
for (int i = 0; i < size && set[i] > 0; i++)
cout << set[i];
cout << endl;
}
int PadPathNum(int** graph, int num, int first) {
static int path_num = 0;
static int visit[9] = {0};
static int set[9] = {0};
static int index = 0;
visit[first] = 1;
set[index++] = first + 1;
print(set, num);
path_num++;
for (int i = 0; i < num; i++)
if (graph[first][i] == 1 && visit[i] == 0)
PadPathNum(graph, num, i);
visit[first] = 0;
set[--index] = 0;
return path_num;
}
以下是以1开头的密码的前面一部输出结果:
1
12
123
1235
12354
123547
1235478
12354786
123547869
12354789
123547896
123548
1235486
12354869
1235487
1235489
12354896
12356
123568
1235684
12356847
1235687
☆─────────────────────────────────────☆
flier0 (flier) 于 (Tue May 15 15:06:33 2012, 美东) 提到:
我的图建漏了一项。。结果貌似要更多
1开始1373,2开始1037,5开始665。。
☆─────────────────────────────────────☆
pore (坚持不懈) 于 (Tue May 15 17:36:19 2012, 美东) 提到:
能给个你说的递归的code吗?
☆─────────────────────────────────────☆
realife (leda) 于 (Tue May 15 18:50:08 2012, 美东) 提到:
我贴的结果是长度为5的密码,没有计算其他长度的。
我给你发个bbs mail吧,代码就不贴出来献丑了,呵呵。
☆─────────────────────────────────────☆
hammer9 (蛤蟆) 于 (Tue May 15 23:46:35 2012, 美东) 提到:
next = {1:[2,4,5],2:[1,3,4,5,6],3:[2,5,6],4:[1,2,5,7,8],5:[1,2,3,4,6,7,8,9],
6:[2,3,5,8,9],
7:[4,5,8],8:[4,5,6,7,9],9:[5,6,8]}
def genpass(now):
if not now: return 0
ret = 1
for n in next[now[-1]]:
if n in now: continue
ret += genpass(now+[n])
return ret
for i in range(1,10):
print i,genpass([i])
1 (共1页)
进入JobHunting版参与讨论
相关主题
一道G面试题寻一道A面试题,呵呵
问一道面试题一道有意思的面试题 (18禁)
问一道Oracle网络面试题求问一道面试题
问一道面试题一道很难的面试题的解法
一道关于电话pad的面试题Amazon一道面试题magic number
[合集] 贡献一道it面试题一道面试题,向本版求教一下。
一道面试题问一道面试题,现在好像很流行这种题
有些今年1月左右的帖子找不到了,是删除了么?签了NDA的面试题可以拿来问别人吗?
相关话题的讨论汇总
话题: genpass话题: now话题: ret话题: next话题: return