书籍叠放

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



全部评论

相关推荐

点赞 评论 收藏
分享
07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
08-15 11:20
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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