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实现)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 2018.2.3 目标:身心健康,财富丰盛 好种子: 1早起健康早餐,种下健康的种子,回向群里姐妹及家人身心健康 ...
- 2018.3.1 目标:身心健康,财富丰盛 好种子: 1早起健康早餐,种下健康的种子 2收拾家,回向女儿和众学子干...
- 半解《论语》 “一知半解”的“半解”。作者解一半,读者解一半;现在解一半,将来解一半。 里仁第四 4.18 子曰:...