poj 1786 Bridge Hands
来源:互联网 发布:网络优化电子书 编辑:程序博客网 时间:2024/05/22 01:27
//比较简单的一道模拟题,模拟扑克牌的派发! #include <iostream>#include <string>#include <vector>#include <cctype>#include <algorithm>#include <map>using namespace std;struct Info//扑克牌的牌面 { char num; char color;}card;//各个选手的牌 vector<Info> n;vector<Info> e;vector<Info> s;vector<Info> w;map<char, int> m;map<char, int> mm;bool cmp(Info a, Info b)//主要是这个比较函数,通过map函数,使其不同字母的比较变得简单了! { if (a.color == b.color) { if ((isdigit(a.num) && isdigit(b.num)) || (isdigit(a.num) && isalpha(b.num)) || (isdigit(b.num) && isalpha(a.num))) return a.num < b.num; else if (isalpha(a.num) && isalpha(b.num)) return m[a.num] < m[b.num]; } else { return mm[a.color] < mm[b.color]; } }int main(){ int i; char direction; string str1, str2, str; m['T'] = 1, m['J'] = 2, m['Q'] = 3, m['K'] = 4, m['A'] = 5; mm['C'] = 1, mm['D'] = 2, mm['S'] = 3, mm['H'] = 4; while (cin >> direction) { if (direction == '#') break; n.clear(), e.clear(), s.clear(), w.clear(); cin >> str1 >> str2; str = str1 + str2; if (direction == 'N')//如果是N派发,则派牌的顺序是eswn!下面的则照顺时针推出! { for (i = 0; i < 104; i += 2) { card.color = str[i]; card.num = str[i+1]; if (i%8==0) e.push_back(card); else if (i%8==2) s.push_back(card); else if (i%8==4) w.push_back(card); else if (i%8==6) n.push_back(card); } } else if (direction == 'E') { for (i = 0; i < 104; i += 2) { card.color = str[i]; card.num = str[i+1]; if (i%8==0) s.push_back(card); else if (i%8==2) w.push_back(card); else if (i%8==4) n.push_back(card); else if (i%8==6) e.push_back(card); } } else if (direction == 'S') { for (i = 0; i < 104; i += 2) { card.color = str[i]; card.num = str[i+1]; if (i%8==0) w.push_back(card); else if (i%8==2) n.push_back(card); else if (i%8==4) e.push_back(card); else if (i%8==6) s.push_back(card); } } else if (direction == 'W') { for (i = 0; i < 104; i += 2) { card.color = str[i]; card.num = str[i+1]; if (i%8==0) n.push_back(card); else if (i%8==2) e.push_back(card); else if (i%8==4) s.push_back(card); else if (i%8==6) w.push_back(card); } } sort(s.begin(), s.end(), cmp); sort(w.begin(), w.end(), cmp); sort(n.begin(), n.end(), cmp); sort(e.begin(), e.end(), cmp); cout << "South player:" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; for (i = 0; i < 13; i++) cout << "|" << s[i].num << " " << s[i].num; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "| " << s[i].color << " "; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "|" << s[i].num << " " << s[i].num; cout << "|" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; cout << "West player:" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; for (i = 0; i < 13; i++) cout << "|" << w[i].num << " " << w[i].num; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "| " << w[i].color << " "; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "|" << w[i].num << " " << w[i].num; cout << "|" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; cout << "North player:" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; for (i = 0; i < 13; i++) cout << "|" << n[i].num << " " << n[i].num; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "| " << n[i].color << " "; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "|" << n[i].num << " " << n[i].num; cout << "|" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; cout << "East player:" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; for (i = 0; i < 13; i++) cout << "|" << e[i].num << " " << e[i].num; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "| " << e[i].color << " "; cout << "|" << endl; for (i = 0; i < 13; i++) cout << "|" << e[i].num << " " << e[i].num; cout << "|" << endl; cout << "+---+---+---+---+---+---+---+---+---+---+---+---+---+" << endl; cout << endl; } system("pause");}/*NCQDTC4D8S7HTDAH7D2S3D6C6S6D9S4SAD7H2CKH5D3CTS8C9H3C3DQS9SQDJH8HAS2SKD4H4S5C7SJC8DKC5C2CAHQCJSTH6HKH9D5HJSCQDTC4D8S7HTDAH7D2S3D6C6S6D9S4SAD7H2CKH5D3CTS8C9H3C3DQS9SQDJH8HAS2SKD4H4S5C7SJC8DKC5C2CAHQCJSTH6HKH9D5HJ#*/