题意:
给定52堆牌,每堆一张。从左到右遍历,若该牌与左数第三张能匹配(花色或者点数相同),则将该牌移动到左三,或者能与左数第一张牌匹配,则移动至左数第一张。前者优先级更高。
思路:
模拟,从左至右遍历,每次移动后要确保没有新的能够移动,即重复执行操作。
学习点:
栈操作(STL)。
两点关于栈新的学习点(详细见代码):
1、stack<string> nCard[MAXN]; //栈和数组结合起来。
2、nCard[i] = nCard[i+1]; // 不同栈直接复制
源代码: