百度笔试编程题

题目一,最短路径,套模板AC40%(目测因为自己用python。。。)

import sys
def FloydWarshall(V_num, weight):
    '''
    :param V_num: int
    :param weight: dict{(v, u):w1, }
    :return:
    '''
    dist = [[sys.maxint for j in range(V_num)] for i in range(V_num)]
    for (u, v) in weight:
        dist[u][v] = weight[(u, v)]
        dist[v][u] = weight[(u, v)]
    for k in range( V_num):
        for i in range( V_num):
            for j in range( V_num):
                if(dist[i][k]<>sys.maxint and dist[k][j]<>sys.maxint and dist[i][k]+dist[k][j]<dist[i][j]):
                    dist[i][j] = dist[i][k] + dist[k][j]
    return dist

t = int(raw_input())
for tid in range(t):
    n, m, a, b = map(int, raw_input().split())
    s = map(int, raw_input().split())
    e = map(int, raw_input().split())
    weight = {}
    for __ in range(m):
        u, v, w = map(int, raw_input().split())
        weight[(u-1, v-1)] = w
        #weight[(v, u)] = w
    dist = FloydWarshall(n, weight)
    ans = sys.maxint
    for si in s:
        for ei in e:
            ans = min(ans, dist[si-1][ei-1])
    print "Case #"+str(tid+1)+": ",
    if ans==sys.maxint:
        print "No answer"
    else:
        print ans

题目二,子串,hash解之

s = raw_input()
current = None
ans = 0
cnt = 0
visited = {}
for c in s:
    if c==current:
        cnt += 1
        if cnt > visited[c]:
            visited[c] = cnt
            ans += 1
    else:
        current = c
        if c not in visited:
            visited[c] = 1
            ans += 1
        cnt = 1
#print visited
print ans
#百度#
全部评论
- -,为啥我今天做的笔试是在AMCATNOW做的,语言还限定C++ java php... 害得突击了一天的java...
点赞 回复 分享
发布于 2016-09-20 18:13
应该不是python问题 我猜是图的连通性判断问题。。最后我来不及了
点赞 回复 分享
发布于 2016-09-20 18:23

相关推荐

xxxxOxo:这公司幽默得很,要了简历半天一点动静都没有,过一会就给你发个邮件让你做测试,做完又没后文了,纯溜人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务