UVa 127 - "Accordian" Patience
2013-09-12 15:08
661 查看
题目大意:有52张牌,每张牌分别第一个字符是牌的大小,第二个字符是牌的花色。首先按照顺序将每张牌列出来,从后往前看,当某张牌的大小或花色和它前面一张牌或者它前面的第三张牌相同时,就将这张牌放在那张牌上面。当既和前一张牌相同又和前面第三张相同,优先将牌放到前面第三张上面。最后统计每摞牌的张数。
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cstdlib> #include<vector> using namespace std; struct Node { char card[3]; } node; typedef vector <Node> P; vector<P> pile; //两层vector嵌套 bool match(Node a,Node b) { if(a.card[0] == b.card[0] || a.card[1] == b.card[1]) return true; return false; } int is_same(int a,int b) { if(a >= 3 && match(pile[b][pile[b].size()-1],pile[a-3][pile[a-3].size()-1])) return is_same(a-3,b); else if(a >= 1 && match(pile[b][pile[b].size()-1],pile[a-1][pile[a-1].size()-1])) return is_same(a-1,b); return a; } int main() { // freopen("D:\\1.txt","r",stdin); int i, k; while(scanf("%s",node.card),node.card[0] != '#') { pile.clear(); P p; p.push_back(node); pile.push_back(p); for(i = 0; i < 51; i++) { scanf("%s",node.card); p.clear(); p.push_back(node); pile.push_back(p); int len = pile.size() - 1; while(len < pile.size()) { k = is_same(len,len); if(k != len) { pile[k].push_back(pile[len][pile[len].size()-1]); pile[len].pop_back(); if(pile[len].empty()) pile.erase(pile.begin()+len); len = k; } len++; } } if(pile.size() == 1) printf("1 pile remaining: 52\n"); else { printf("%d piles remaining:",pile.size()); for(i = 0; i < pile.size(); i++) printf(" %d",pile[i].size()); printf("\n"); } } return 0; }
相关文章推荐
- UVA 127 - "Accordian" Patience (模拟)
- UVa 127 - "Accordian" Patience 数据结构专题
- uva 127 - "Accordian" Patience
- uva127 - "Accordian" Patience
- UVA 127 - "Accordian" Patience---wa 了许久,错误原因见注释!
- UVa:127 "Accordian" Patience
- uva127 "Accordian" Patience poj1214 模拟
- UVA - 127 "Accordian" Patience
- uva 127 poj 1214 "Accordian" Patience (栈STL运用)
- UVA 127 "Accordian" Patience
- UVA 127 - "Accordian" Patience---用STL做的(TLE超时)
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
- UVa 127 "Accordian" Patience (模拟链表&栈)
- UVa 127 "Accordian" Patience
- UVA127 - "Accordian" Patience
- uva-127 - "Accordian" Patience
- Uva - 127 - "Accordian" Patience
- uva127 "Accordian" Patience
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
- uva 127 "Accordian" Patience(手风琴纸牌)