百度笔试编程题
题目一,最短路径,套模板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#百度#