书籍叠放

标题:书籍叠放 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限
书籍的长、宽都是整数对应 (l,w)。如果书A的长宽度都比B长宽大时,则允许将B排列放在A上面。
现在有一组规格的书籍,书籍叠放时要求书籍不能做旋转,请计算最多能有多少个规格书籍能叠放在一起。

def judge(book_i, book_j):
    return book_i[0] < book_j[0] and book_i[1] < book_j[1]


while True:
    try:
        books = sorted(list(eval(input())), reverse=True)
        books_num = len(books)
        result = [1 for _ in range(books_num)]
        for i in range(1, books_num):
            j = 0 
            while j < i:
                if judge(books[i], books[j]) and result[i] < result[j] + 1:
                    result[i] = result[j] + 1
                j += 1
        print(max(result))    
    except:
        break
import json
class solution:
	def maxBooks(self, books):
		if not books:
			return 0

		n = len(books)
		books.sort(key=lambda x: (x[0], -x[1]))

		f = [1] * n
		for i in range(n):
			for j in range(i):
				if books[j][1] < books[i][1]:
					f[i] = max(f[i], f[j] + 1)

		return max(f)

while True:
	try:
		strs = input()
		books = json.loads(strs)
		s = solution()
		print(s.maxBooks(books))
	except:
		break



全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务