主要是思路,从第四个数开始,以这个数i为结尾的"不相邻的数的最大和"是其前方i - 3和i- 2的较大值加上当前值

while True:
    try:
        n = int(input())
        l = list(map(int, input().split()))
        dp = [l[0], l[1], l[0] + l[2]]  # 初始化,由于不相邻取数,dp需要前3个。dp[i]为以第i个字符为结尾的不相邻的数的最大和
        if n == 1:  # 1个时候直接输出
            print(l[0])
        elif n == 2:  # 2个的时候,输出两个两个较大的
            print(max(l[0], l[1]))
        elif n == 3:  # 3个的时候, 输出1、3的和与2的太大值
            print(max(l[0] + l[2], l[1]))
        else:  # 大于3的时候进行比较,只需比较与他相隔一字符或两字符的大小中较大的,再加上当前的l[i]即为当前当前不相邻的数的最大和
            for i in range(3, n):
                dp.append(max(dp[i - 2], dp[i - 3]) + l[i])
        print(max(dp))  # 输出dp中较大的一个,即以每个数为结尾的不相邻的数的最大和
    except:
        break