360 2020技术综合笔试(2019.8.31)编程题双AC

 

s = input()
m = {}
maximum = 0
for i in s:
    if i not in m:
        count = 0
        m[i] = i
        for j in s:
            if j == i:
                count += 1

        if count >= maximum:
            maximum = count

print(maximum)

只需要考虑单个字符就可以

 

N, M = list(map(int, input().split()))
D = []
for _ in range(M):
    D.append(int(input()))

m = []
for i in range(N):
    temp = [i]
    for j in D:
        length = len(temp)
        for _ in range(length):
            ii = temp[0]
            temp.pop(0)
            if ii + j >= N and ii - j < 0:
                continue

            if ii + j < N:
                temp.append(ii + j)

            if ii - j >= 0:
                temp.append(ii - j)
        if not temp:
            break

    for j in temp:
        if j not in m:
            m.append(j)

print(len(m))

对起点进行遍历,每个起点可以得到很多个终点,建立一个map存放终点,最后map的大小即得到所有终点数。

上面的temp是记录每一步的终点,如果进行完该步后temp为空了,说明无论怎么走都不能满足终点需求,所以break

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值