一副扑克牌(52张),按照从左往右的顺序,若当前扑克牌和它的左一或左三扑克牌的数字或花色相同,就把它移动到那张牌的上方,移动后如果继续满足条件则继续移动。左一和左三同时满足时,左三优先。当有某个位置的牌为空时,要及时把这个位置消除。
实战了一把数组模拟链表,还发现了一个大佬的博客,嚯嚯。收获了感动,坚定了继续坚持下去的信念。
链接
题目链接Uva127-“Accordian Patience”
参考链接shuangde800的博客
题解
52个位置的牌堆分别用一个栈来维护。因为有消除牌堆的过程,所以会有频繁的移动,用链表来维护牌堆之间的关系效率比较高。代码里用两个数组next_idx和front_idx模拟了双向链表。
代码
1 | /* |