2020-03-06 C - 瑞神打牌

題意

有東南西北四個方向,首先指定在某個方向上的人開始發(fā)牌赦政,然后從這個方向開始胜宇,按照東南西北的順序,從發(fā)牌人的下一個人開始發(fā)牌恢着,一人發(fā)一張輪流發(fā)牌桐愉,輸入的數(shù)據(jù)是兩串string類型的編碼,每兩個是一組掰派,一組中第一個是這張牌的花色从诲,第二個事這張牌的大小,要求計算出東南西北四個方向上的每個人的的所有牌靡羡,然后按照花色和牌的大小系洛,雙關鍵字排序。

思路

首先想到的是vector數(shù)組略步,描扯,申請4個,代表四個方向的四個人趟薄,然后里面是pair<char,char>類型變量绽诚,用這種變量來存儲每個人的所有牌,用string來存儲輸入的兩組牌面數(shù)據(jù)杭煎,然后發(fā)現(xiàn)憔购,每一輪在這組數(shù)據(jù)中占8位,因為有4個人岔帽,每張牌有花色和大小,所以我設計一個for循環(huán)导绷,里面的變量i每次加8位犀勒,每次一個循環(huán)中,就讓每個人的vector讀取數(shù)據(jù)中的兩位妥曲,這樣4個人的正確取牌獲得贾费,然后我用map,存儲所有的牌面和花色的大小,編寫一個雙關鍵字比較函數(shù)檐盟,其中用map來把花色和牌面轉(zhuǎn)成實際值來放進sort函數(shù)來進行排序褂萧,一開始的時候,我還是設置了另一個map葵萎,用來存儲東南西北每個方向的下一個方向是什么导犹,最后的時候要求從南方向開始輸出唱凯,所以最后的時候,用這個map來把開始的時候每個方向上的人和相應的vector數(shù)組連接輸出即可谎痢。

總結(jié)

這道題考察如何存儲每個人的牌磕昼,還有把每個人和相應的方向相聯(lián)系的操作,還有一個就是节猿,在牌面和花色有部分是字母的情況下票从,如何進行排序的問題。

AC代碼

#include<iostream>
#include<string.h>
#include<utility>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
string simple, simple2;
vector<pair<char, char> > people[4];
map<char, int> dot;
map<char, char> Next;
map<char, int> dui;
bool cmp(pair<char, char> a, pair<char, char> b)
{
    if (a.first != b.first)return dot[a.first] < dot[b.first];
    return dot[a.second] < dot[b.second];
}
void print(int k)
{
    cout << '+';
    for (int i = 0; i < 13; i++)
    {
        cout << "---+";
    }
    cout << endl;
    cout << "|";
    for (int i = 0; i < 13; i++)
    {
        cout << people[k][i].second<<" "<< people[k][i].second<<"|";
    }
    cout << endl;
    cout << "|";
    for (int i = 0; i < 13; i++)
    {
        cout << " " << people[k][i].first << " " << "|";
    }
    cout << endl;
    cout << "|";
    for (int i = 0; i < 13; i++)
    {
        cout << people[k][i].second << " " << people[k][i].second << "|";
    }
    cout << endl;
    cout << '+';
    for (int i = 0; i < 13; i++)
    {
        cout << "---+";
    }
    cout << endl;
}
int main()
{
    for (int i = 0; i < 4; i++)
    {
        people[i].resize(13);
    }
    Next['N'] = 'E';
    Next['E'] = 'S';
    Next['S'] = 'W';
    Next['W'] = 'N';
    dot['C'] = 0;
    dot['D'] = 1;
    dot['S'] = 2;
    dot['H'] = 3;
    dot['T'] = 10;
    dot['J'] = 11;
    dot['Q'] = 12;
    dot['K'] = 13;
    dot['A'] = 14;
    dot['2'] = 2;
    dot['3'] = 3;
    dot['4'] = 4;
    dot['5'] = 5;
    dot['6'] = 6;
    dot['7'] = 7;
    dot['8'] = 8;
    dot['9'] = 9;
    char begin;
    while (1)
    {
        cin >> begin;
        char then=begin;
        for (int i = 0; i < 4; i++)
        {
            then = Next[then];
            dui[then] = i;
        }
        if (begin == '#')
            break;
        cin >> simple >> simple2;
        simple = simple + simple2;
        int b = 0;
        for (int i = 0; i < 104; i +=8 )
        {
            people[0][b]=make_pair(simple[i], simple[i + 1]);
            people[1][b]=make_pair(simple[i+2], simple[i + 3]);
            people[2][b]=make_pair(simple[i + 4], simple[i + 5]);
            people[3][b]=make_pair(simple[i+6], simple[i + 7]);
            b++;
        }
        for (int i = 0; i < 4; i++)
        {
            sort(people[i].begin(), people[i].end(), cmp);
        }
        char th='S';
        for (int i = 0; i < 4; i++)
        {
            int k = dui[th];
            switch (th)
            {
                case    'S':
                    cout << "South player:" << endl;
                    break;
                case 'E':
                    cout << "East player:" << endl;
                    break;
                case 'W':
                    cout << "West player:" << endl;
                    break;
                case 'N':
                    cout << "North player:" << endl;
                    break;
            }
            print(k);
            th = Next[th];
        }
        cout << endl;
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載滨嘱,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者峰鄙。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市太雨,隨后出現(xiàn)的幾起案子吟榴,更是在濱河造成了極大的恐慌,老刑警劉巖躺彬,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煤墙,死亡現(xiàn)場離奇詭異,居然都是意外死亡宪拥,警方通過查閱死者的電腦和手機仿野,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來她君,“玉大人脚作,你說我怎么就攤上這事〉奚玻” “怎么了球涛?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長校镐。 經(jīng)常有香客問我亿扁,道長,這世上最難降的妖魔是什么鸟廓? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任从祝,我火速辦了婚禮,結(jié)果婚禮上引谜,老公的妹妹穿的比我還像新娘牍陌。我一直安慰自己,他們只是感情好员咽,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布毒涧。 她就那樣靜靜地躺著,像睡著了一般贝室。 火紅的嫁衣襯著肌膚如雪契讲。 梳的紋絲不亂的頭發(fā)上仿吞,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音怀泊,去河邊找鬼茫藏。 笑死,一個胖子當著我的面吹牛霹琼,可吹牛的內(nèi)容都是我干的务傲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枣申,長吁一口氣:“原來是場噩夢啊……” “哼售葡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忠藤,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挟伙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后模孩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尖阔,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年榨咐,在試婚紗的時候發(fā)現(xiàn)自己被綠了介却。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡块茁,死狀恐怖齿坷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情数焊,我是刑警寧澤永淌,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站佩耳,受9級特大地震影響遂蛀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜干厚,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一答恶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萍诱,春花似錦、人聲如沸污呼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽燕酷。三九已至籍凝,卻和暖如春周瞎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饵蒂。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工声诸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人退盯。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓彼乌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渊迁。 傳聞我的和親對象是個殘疾皇子慰照,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 牌局由四個人構(gòu)成,圍成一圈琉朽。我們稱四個方向為北 東 南 西毒租。對應的英文是North,East箱叁,South墅垮,West...
    Picksy閱讀 105評論 0 0
  • STL部分 1.STL為什么廣泛被使用 C++ STL 之所以得到廣泛的贊譽,也被很多人使用耕漱,不只是提供了像vec...
    杰倫哎呦哎呦閱讀 4,321評論 0 9
  • 西風卷起殘葉蹉算色!葉飄零,枯枝似我孤个?盛年如水飛梭過剃允。去留皆隨意,往來因果齐鲤。 半生浪跡空蹉峨斥废。太情深,緣份尚可给郊!紅塵躁...
    影曳香弄閱讀 458評論 2 8
  • 分享球權以及多一次傳球 重要的不是誰得分牡肉,而是如何制造出輕松得分機會 不論隊伍采取什么進攻套路方式,重要的目標都是...
    laoxia閱讀 640評論 0 0
  • 3月25日重讀《富爸爸給你的錢找份工作》有感:人為什么會自信淆九,因為自己可以做到统锤,而且做的好。為什么我不愿意在學校炭庙,...
    王喜慶財商閱讀 161評論 0 0