首页 > 代码库 > UVa127 "Accordian" Patience (模拟)
UVa127 "Accordian" Patience (模拟)
链接:http://acm.hust.edu.cn/vjudge/problem/18732
分析:模拟,用了vector调用erase时可以自动调整大小的特性,居然没T。
1 #include <cstdio> 2 #include <string> 3 #include <vector> 4 #include <stack> 5 #include <iostream> 6 using namespace std; 7 8 int main() { 9 string s;10 while (cin >> s && s != "#") {11 vector<stack<string> > piles(52);12 piles[0].push(s);13 for (int i = 1; i < 52; i++) {14 cin >> s;15 piles[i].push(s);16 }17 while (true) {18 bool isMove = false;19 for (int i = 0; i < piles.size(); i++) {20 string& card = piles[i].top();21 if (i - 3 >= 0) {22 string& card1 = piles[i - 3].top();23 if (card[0] == card1[0] || card[1] == card1[1]) {24 piles[i - 3].push(card);25 if (piles[i].size() == 1) piles.erase(piles.begin() + i);26 else piles[i].pop();27 isMove = true;28 break;29 }30 }31 if (i - 1 >= 0) {32 string& card1 = piles[i - 1].top();33 if (card[0] == card1[0] || card[1] == card1[1]) {34 piles[i - 1].push(card);35 if (piles[i].size() == 1) piles.erase(piles.begin() + i);36 else piles[i].pop();37 isMove = true;38 break;39 }40 }41 }42 if (!isMove) break;43 }44 cout << piles.size() << " pile" << (piles.size() > 1 ? "s" : "") << " remaining: ";45 for (int i = 0; i < piles.size(); i++) {46 if (i) cout << ‘ ‘;47 cout << piles[i].size();48 }49 cout << ‘\n‘;50 }51 return 0;52 }
UVa127 "Accordian" Patience (模拟)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。