刚出锅的HULU 笔试题...

AC前两道水题,第三道本来想拿部分分,结果死活过不去,TLE... 大家交流下啊~

ps:附代码

第一题:

slist = raw_input().strip().split()
slist.sort(key=lambda x:len(x))
n = len(slist)
def find(n,slist):
    for i in range(n-2, -1, -1):
        for j in range(i-1, -1, -1):
            if slist[i]+slist[j] in slist[i+1:]:
                return slist[i]+slist[j]
            if slist[j]+slist[i] in slist[i+1:]:
                return  slist[j]+slist[i]
print find(n, slist)

第二题:

import itertools
n = int(raw_input().strip())
parts = []
def generate_negs(multi_vals):
    n = len(multi_vals)
    num = 2**n
    ans = []
    for i in range(num):
        res = []
        m = i
        for j in range(n):
            if m&1:
                res.append('-'+multi_vals[j])
            else:
                res.append(multi_vals[j])
            m >>= 1
        res.sort()
        ans.append(','.join(res))
    return ans
def generate_single_request(name, is_necessary, is_multi, is_neg, vals):
    res = []
    if not is_necessary:
        res.append("")
    if is_multi:
        if is_neg:
            for i in range(1, len(vals)+1):
                #all_multi_vals = list(itertools.combinations(vals, i))
                for multi_vals in itertools.combinations(vals, i):
                    res += [name+'='+r for r in generate_negs(multi_vals)]
        else:
            for i in range(1, len(vals)+1):
                multi_vals = itertools.combinations(vals, i)
                res += [name + '=' +','.join(r) for r in multi_vals]
    else:
        if is_neg:
            for v in vals:
                res.append(name+"=-"+v)
            res += [name + '=' +r for r in vals]
        else:
            res += [name + '=' + r for r in vals]
    return res
for _ in range(n):
    name, is_necessary, is_multi, is_neg = raw_input().strip().split()
    is_necessary = int(is_necessary)
    is_multi = int(is_multi)
    is_neg = int(is_neg)
    vals = raw_input().strip().split(',')
    vals.sort()
    this_part = generate_single_request(name, is_necessary, is_multi, is_neg, vals)
    parts.append(this_part)
res = []
def generate_requests(parts, i, current):
    if i==len(parts):
        res.append(current[:])
        return
    else:
        for p in parts[i]:
            generate_requests(parts, i+1, current+[p])
generate_requests(parts, 0, [])
final = []
for r in res:
    final.append('&'.join(sorted([t for t in r if t!=''])))
final.sort()
for r in final:
    print r

第三题:

def valid(x, y, row_num, col_num):
    if 0<=x<row_num and 0<=y<col_num:
        return True
    else:
        return False

def bfs(map_hl, x, y, row_num, col_num, visited, hop_left, l):
    if visited[x][y]:
        return -1
    visited[x][y] = True
    ans = 0
    if valid(x, y-1, row_num, col_num) and map_hl[x][y-1]=="#":
        ans = max(ans, bfs(map_hl, x, y-1, row_num, col_num, visited, hop_left,l))
    if valid(x, y + 1, row_num, col_num) and map_hl[x][y + 1] == "#":
        ans = max(ans, bfs(map_hl, x, y + 1, row_num, col_num, visited, hop_left,l))
    for i in range(1, l+1):
        if valid(x+i, y, row_num,col_num) and map_hl[x+i][y] == "#":
            ans = max(ans, bfs(map_hl, x+i, y, row_num, col_num, visited, hop_left, l))
        if valid(x-i, y, row_num,col_num) and map_hl[x-i][y] == "#":
            ans = max(ans, bfs(map_hl, x-i, y, row_num, col_num, visited, hop_left, l))
    if hop_left>0 and valid(x, y - 1, row_num, col_num) and map_hl[x][y - 1] == "-" and valid(x, y - 2, row_num, col_num) and map_hl[x][y - 2] == "#":
        ans = max(ans, bfs(map_hl, x, y - 2, row_num, col_num, visited, hop_left-1, l))
    if hop_left>0 and valid(x, y + 1, row_num, col_num) and map_hl[x][y + 1] == "-" and valid(x, y + 2, row_num, col_num) and map_hl[x][y + 2] == "#":
        ans = max(ans, bfs(map_hl, x, y + 2, row_num, col_num, visited, hop_left-1, l))
    visited[x][y] = False
    return ans+1




N = int(raw_input())
for tid in range(1, N+1):
    n, m, l, s = map(int, raw_input().strip().split())
    map_hulu = []
    for _ in range(m):
        row = raw_input().strip()
        map_hulu.append(row)
    #print map_hulu
    visited = [[False]*n for _ in range(m)]
    ans = bfs(map_hulu, m-1, 0, m, n, visited, s,l)
    print "Test Case "+str(tid)+": "+str(ans)
全部评论
hulu还有其他笔试机会了么
点赞
送花
回复
分享
发布于 2016-09-22 19:14
我的第三题re。。。。
点赞
送花
回复
分享
发布于 2016-09-22 19:16
网易互娱
校招火热招聘中
官网直投
太***
点赞
送花
回复
分享
发布于 2016-09-22 19:29
666,c++表示被第二题恶心的不行
点赞
送花
回复
分享
发布于 2016-09-22 19:42
第三题题目说30%数据s=0,经过我测试发现其实有50%。开始一版样例都没过,一交过了50%。
点赞
送花
回复
分享
发布于 2016-09-23 03:59

相关推荐

点赞 5 评论
分享
牛客网
牛客企业服务