给定两个相同长度 n 的整数列表 a 和 b。
找到严格递增的整数序列的计数,i[0] < i[1] < ... < i[n-1]使得
min(a[i], b[i]) <= i[i] <= max(a[i], b[i])对于每个i。
例子
输入:
a= [1,3,1,6]
b= [6,5,4,4]
输出:
4
这四个序列将是:
[1,3,4,5]
[1,3,4,6]
[2,3,4,5]
[2,3,4,5]
这是我试过的
a=[1,3,1,6]
b=[6,5,4,4]
P=[]
for i in range(len(a)):
if i<len(a)-1:
if max(a[i],b[i])>=max(a[i+1],b[i+1]):
P.append([x for x in range(min(a[i],b[i]),min(max(a[i],b[i]),max(a[i+1],b[i+1])))])
else:
P.append([x for x in range(min(a[i],b[i]),1+min(max(a[i],b[i]),max(a[i+1],b[i+1])))])
else:
P.append([x for x in range(min(a[i],b[i]),max(a[i],b[i])+1)])
for i in range(len(a)):
if i<len(a)-1 and P[i+1][-1]<=P[i][-1]:
P[i]=[x for x in range(P[i][0],P[i+1][-1])]
if i>0 and P[i][0]<=P[i-1][0]:
P[i]=[x for x in range(P[i-1][0]+1,1+P[i][-1])
cnt=1
for i in P:
cnt*=len(i)
print(cnt)
我所做的是我采用了这个设置
1 2 3 4 5 6
3 4 5
1 2 3 4
4 5 6
并将其减少到这个
1 2
3
4
5 6
删除所有不会进入序列的数字。
现在我要做的是,只需乘以每个行序列的 len。当有这样的情况时,问题就出现了。
1 2 3
3 4
4 5
5 6
现在长度的简单乘法不成立。这就是我被困的地方。
斯蒂芬大帝
相关分类