书籍叠放
标题:书籍叠放 | 时间限制: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