拼多多 8.5笔试

编程入门 行业动态 更新时间:2024-10-05 05:12:12

拼多多 8.5<a href=https://www.elefans.com/category/jswz/34/1769509.html style=笔试"/>

拼多多 8.5笔试

输入:s = “abcdefghijklmnop”

输出:

abcde
p   f
o   g
n   h
mlkji

思路:计算坐标即可。关键在于中间部分,观察知第一列和最后一列坐标相加为15 + 5 = 20 = 5*(n-1)

import sys
s = "abcdefgh"  #样例
k = len(s)  #总数
n = (k+4)//4  #边长print(s[0:n]) #第一行
for i in range(1, n-2+1):print(s[k-i] + " " * (n-2) + s[5*(n-1) - (k-i)])
print(s[3*n-3:2*n-3:-1])  #最后一行


输入:123
输出:4
输入:00011
输出:2

思路:求出所有划分,对每一种划分出的字符串a,b:
1.若a、b直接为0,则只有一种组合方式
2.若末尾和开头都为0,非法,0种
3.若末尾或开头为0,只能有一种
4.末尾开头都不为0,有len(a)种:不加’.’,或每两位之间加’.’

(只过了5%,不知道问题在哪)
发现想复杂了,原本想题目求的是“组合”数,即(11,1.1),(1.1,11)是同一种情况。后来发现没那么复杂,可以当做是不同情况,这样就不用考虑去重,即a==b的时候结果依然是两者的笛卡尔积

import sys
num = sys.stdin.readline()[:-1]  #除去换行符
sum = 0
for i in range(1, len(num)):  #列举所有划分a, b = num[0:i], num[i:]print(a,b)count_a, count_b = 0, 0if a == '0':count_a = 1elif a[0] == '0' and a[-1] == '0':count_a = 0elif a[-1] == '0' or a[0] == '0':count_a = 1else:count_a = len(a)if b == '0':count_b = 1elif b[0] == '0' and b[-1] == '0':count_b = 0elif b[-1] == '0' or b[0] == '0':count_b = 1else:count_b = len(b)#笛卡尔积    sum += count_a * count_b  
print(sum)


输入

5 0
1 2 3
0 4
0 4
0 4
1 2 3

输出:

4

思路:用集合,每个用户的朋友列表求交集,最大的为最可能认识的人

import sys
#n为用户数,target为所求用户序号
n, target = map(int, sys.stdin.readline().split())users = []  #所有用户分别做成集合
for i in range(n):friends = sys.stdin.readline().split()friends = [ int(f) for f in friends]friends = set(friends)users.append(friends)tar_set = users[target]  #所求用户的朋友集
best = -1  #最可能认识的序号
best_count = -1  #最大交集计数for i in range(n):if i == target or (i in tar_set):  #不与自身以及自身的直接朋友做交集continuecfriends = tar_set & users[i]  #求交集count = len(cfriends)if count > best_count:  #找到更大交集best_count = countbest = i
print(best)

更多推荐

拼多多 8.5笔试

本文发布于:2024-02-13 15:16:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759318.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔试

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!