美文网首页
201809-4(Python实现)

201809-4(Python实现)

作者: tmax | 来源:发表于2019-11-27 22:55 被阅读0次
菜卖不动了算了算了...
import sys
n = int(input())
bList = list( map(int, input().split()) )
bList = [0] + bList
aList = [0]*(n+1)
f = [[[0 for i in range(301)] for j in range(301)] for k in range(n+1+1)]

def check():
    for i in range(1, n+1):
        if i==1 and int((aList[1]+aList[2])/2)==bList[i]:
            continue
        if i==n and int((aList[i-1]+aList[i])/2)==bList[i]:
            continue
        if i!=1 and i!=n and int((aList[i-1]+aList[i]+aList[i+1])/3)==bList[i]:
            continue
        return False
    return True
            

def dfs(p):
    #print( ' '.join( list(map(str,aList)) ) )
    if p > n:
        #print( ' '.join( list(map(str,aList)) ) )
        if check():
            #print
            aList.pop(0) 
            print( ' '.join( list(map(str,aList)) ) )
            sys.exit()
        else:
            return
    if f[p][aList[p-1]][aList[p-2]] == 1:
        return 
    else:
        if p==n:
            for i in range(2*bList[n]-aList[p-1], 2*bList[n]-aList[p-1]+1+1):
                if i > 0:
                    f[p][aList[p-1]][aList[p-2]] = 1
                    aList[p] = i
                    dfs(p+1)
        elif p==2:
            for i in range(2*bList[1]-aList[p-1], 2*bList[1]-aList[p-1]+1+1):
                if i > 0:
                    aList[p] = i
                    dfs(p+1)
        else:
            for i in range(3*bList[p-1]-aList[p-1]-aList[p-2], 3*bList[p-1]-aList[p-1]-aList[p-2]+2+1):
                if i > 0:
                    f[p][aList[p-1]][aList[p-2]] = 1
                    aList[p] = i
                    dfs(p+1)
def main():
    for i in range(1, 2*bList[1]+1):
        aList[1] = i
        dfs(2)

main()

相关文章

网友评论

      本文标题:201809-4(Python实现)

      本文链接:https://www.haomeiwen.com/subject/doamwctx.html