No.6 同花顺判定

    科技2022-07-14  143

    No.6 同花顺判定

    #include<iostream> using namespace std; //A有两种理解方法,一是“1”,而是“K”后边的14 class card { public: int num; //A暂且当1,然后在判定时分情况讨论 int pattern; //1,2,3,4 card* next = NULL; card() {}; void set_card(char n, int p) { num = n; pattern = p; } }; void swap(int &a, int &b) { int temp; temp = a; a = b; b = temp; } class set { //五张牌的集合 card* head = NULL; card* tail = NULL; public: set() {}; void insert(card* temp) { if (head == NULL) { head = tail = temp; } else { tail->next = temp; tail = temp; } } void sort() { for (card* temp = head; temp != tail; temp = temp->next) { for (card* curr = temp->next; curr != NULL; curr = curr->next) { if (temp->num > curr->num) { swap(temp->num, curr->num); } } } } bool check() { bool n = 1; card* curr =this-> head; for (; curr!= tail->next; curr = curr->next) { if (curr->pattern != this->head->pattern) { n = 0; } } return n; } bool judge() { this->sort(); bool n2 = 1; bool n1 = 1; for (card* curr = head; curr !=tail; curr = curr->next) { if ((curr->next->num - curr->num) != 1) { n1 = 0; } } if (head->num == 1) { head->num = 14; this->sort(); for (card* curr = head; curr != tail; curr = curr->next) { if ((curr->next->num - curr->num) != 1) { n2 = 0; } } } return (n1 || n2); } }; int main() { int num; int pattern; set S; for (int i = 0; i < 5; i++) { cin >> num >> pattern; card* temp = new card(); temp->set_card(num, pattern); S.insert(temp); } if (S.check()==1) { if (S.judge()==1) { cout << "Yes!" << endl; } else { cout << "NO!" << endl; } } else { cout << "NO!" << endl; } return 0; }
    Processed: 0.011, SQL: 8