较为拙劣的处理用例输入
由于本人算是半路出家,如果有更好的解决python的输入问题,还请不吝赐教
关于这个叠积木问题,我看到有这样的版本(转自添加链接描述)
输入的是包含长和宽的二维数组
还有这样的
如果只是输入一项比较,未免也太简单了,和那个最长上升子序列问题很接近了
以第一个例子来说吧,需要比较长和宽
如果不考虑输入,算法是这样的
list1 = [[2,3],[6,3],[3,5],[5,4],[6,5]]
list2 = [[] for _ in range(len(list1))]
for i in range(len(list1)):
list2[i].append(max(list1[i]))
list2[i].append(min(list1[i]))
#上一个循环已经将长放在第一位,宽放在第二位了
#接下来根据第一位长的大小降序排列,在根据宽的大小降序排列
#该问题将变成类似最大递减子序列问题
list2 = sorted(list2,key=lambda x:(-x[0],-x[1]))
dp = [1]*(len(list2