![](https://img.haomeiwen.com/i7712148/9c786f1b0beef876.png)
菜卖不动了算了算了...
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()
网友评论