大致意思:
有一些集合,合并其中有交集的集合,返回最终集合个数,和最长集合的长度,(考试结束10分钟后)写了个动态规划的算法,不知道能不能ac...
def merge(target):
if(len(target) == 1):
return [target[0]]
x = target[0]
tmp = merge(target[1:])
flag = 0
for i in range(len(tmp)):
if(len(x&tmp[i]) > 0):
tmp[i] = x|tmp[i]
flag = 1
if(flag == 1):
return tmp
else:
tmp = tmp+[x]
return tmp
while True:
x = raw_input()
n = int(x)
tmp = []
for i in range(n):
x = raw_input().strip().split()
x = map(lambda x:int(x),x)
x = set(x)
tmp.append(x)
temp = merge(tmp)
max = 0
for i in temp:
if len(i) >= max:
max = len(i)
print max,len(temp)
对了,测试用例是
3
1 2 3
2 5 6
8