n = int(input())
# from numpy import right_shift
total = n ** 3
ave = 0
ave = int(total / n)
left_L = []
right_L = []
mid = []
if ave % 2 == 0:
left_end = ave - 1
right_start = ave + 1
left_L.append(left_end)
right_L.append(right_start)
for i in range(int(n/2)-1):
left_L.append(left_end - (i+1)*2)
right_L.append(right_start + (i+1)*2)
else:
# left_end = ave - 2
# right_start = ave + 2
for i in range(int((n-1)/2)):
left_L.append(ave - (i+1)*2)
right_L.append(ave + (i+1)*2)
mid.append(ave)
left_L = left_L[::-1]
# print(left_L+mid+right_L)
res = left_L+mid+right_L
res = [str(ch) for ch in res]
print('+'.join(res))
HJ77 火车进站(DFS)
python复制代码
# 定义一个全局变量 res 用于存放最终的出站序列
res = []
# 定义递归函数 dfs
def dfs(wait, stack, out):
"""
递归深度优先搜索所有可能的出站序列
参数:
wait (list): 还未进站的火车编号列表
stack (list): 当前已经进站但未出站的火车编号
out (list): 已经出站的火车编号序列
"""
# 如果 wait 和 stack 都为空,说明所有火车已经完成进站出站,将当前的出站序列添加到 res 中
if not wait and not stack:
res.append(' '.join(map(str, out)))
# 如果 wait 不为空,将当前 wait 列表的第一个火车编号入栈,递归调用 dfs 函数
if wait:
dfs(wait[1:], stack + [wait[0]], out)
# 如果 stack 不为空,将栈顶的火车编号出栈,添加到 out 序列中,递归调用 dfs 函数
if stack:
dfs(wait, stack[:-1], out + [stack[-1]])
# 主程序
while True:
try:
# 读取输入数据
n, nums = int(input()), list(map(int, input().split()))
# 调用 dfs 函数计算所有的出站序列
dfs(nums, [], [])
# 按照字典序输出所有的出站序列
for i in sorted(res):
print(i)
# 清空 res 列表,准备处理下一组数据
res.clear()
except:
# 遇到异常则退出循环
break
HJ91 走格子方法,(动态规划,递归,有代表性)
python复制代码
def func(x,y):
if x < 0 or y < 0:
return 0
elif x == 0 or y == 0:
return 1
else:
return func(x-1, y)+func(x, y-1)
while True:
try:
n, m = map(int, input().split())
res = func(n, m)
print(res)
except:
break
python复制代码
```py
#动态规划解决
#nowcoder不能导入numpy模块,只能手工创建二维数组
#重点注意二维数据的创建方法,重点注意其横竖坐标,注意注意
#dp = [[1 for i in range(n+1)] for j in range(m+1)],横坐标是 n, 竖坐标是m
while True:
try:
n,m = map(int, input().split(' '))
dp = [[1 for i in range(n+1)] for j in range(m+1)]
for i in range(1,m+1):
for j in range(1,n+1):
dp[i][j] = dp[i-1][j]+dp[i][j-1]
print(dp[m][n])
except:
break
HJ93 数组分组(递归)
python复制代码
def fun(sum3, sum5, other):
if sum3 == sum5 and len(other) == 0:
return True
elif len(other) == 0:
return False
else:
return fun(sum3 + other[0], sum5, other[1:]) or fun(
sum3, sum5 + other[0], other[1:]
)
while True:
try:
n = int(input())
num_list = list(map(int, input().split()))
list3, list5, other = [], [], []
for i in num_list:
if i % 3 == 0:
list3.append(i)
continue
if i % 5 == 0:
list5.append(i)
continue
other.append(i)
sum3 = sum(list3)
sum5 = sum(list5)
if fun(sum3, sum5, other):
print("true")
else:
print("false")
except:
break