<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    C++ 算法題解:數組元素循環右移問題詳解

    • 發布:C++培訓
    • 來源:資料庫
    • 時間:2020-08-03 15:00

    1、數組元素循環右移問題

    思路:

    最長可能輸入20位整數,long long也有可能會溢出,只能用字符串處理。

    注意string的每一位是一個char,做計算注意-'0'

    自己實現計算,準備一個進位項,由于只做翻倍,可簡單判斷此位>5進位項為1,否則為0

    由于翻倍后可能位數+1,預設翻倍后的char數組時按+1大小來開,計算結束后,通過判斷最高位,將正確的char賦到字符串中去,后面用字符串來處理

    判斷是否是原數的數字調換順序,只要組成兩個數的數字個數都對應即可確定。

    #include<iostream>

    #include<cstdio>

    #include<string>

    using namespace std;

    int main()

    {

    string ori_num;

    cin >> ori_num;

    bool isPermutation = true;

    int ori_bitnum[10] = {0};

    char *double_num = new char[ori_num.length()+1];

    if (ori_num[0] >= '5') isPermutation = false;

    char carry = '0';

    for (int i = ori_num.length(); i > 0; i--){

    double_num[i] = (ori_num[i-1] - '0') * 2 % 10 + carry;

    carry = ori_num[i-1] < '5'? '0': '1';

    ++ori_bitnum[ori_num[i-1]-'0'];

    }

    double_num[0] = carry;

    string double_numstr = carry != '0'? double_num: double_num + 1;

    if(isPermutation){

    int double_bitnum[10] = {0};

    for (int i = 0; i < ori_num.length()+1; i++){

    ++double_bitnum[double_numstr[i]-'0'];

    }

    for (int i = 0; i < 10; i++){

    if (ori_bitnum[i] != double_bitnum[i]){

    isPermutation = false;

    break;

    }

    }

    }

    printf("%s\n",isPermutation? "Yes": "No");

    cout << double_numstr;

    return 0;

    }

    2、Shuffling Machine

    思路:多開一個數組,按給定的順序將原數組的卡片內容賦過去,如果多次操作,就將新的數組搬運到原數組中去。

    #include<iostream>

    #include<string>

    using namespace std;

    string cards[54];

    string new_cards[54];

    void copyCards(){

    for (int i = 0; i < 54; i++){

    cards[i] = new_cards[i];

    }

    }

    int main()

    {

    for (int i = 0; i < 54; i++){

    if (i < 13){

    cards[i] = "S";

    cards[i].append(to_string(i+1));

    }else if (i < 26){

    cards[i] = "H";

    cards[i].append(to_string(i-12));

    }else if (i < 39){

    cards[i] = "C";

    cards[i].append(to_string(i-25));

    }else if (i < 52){

    cards[i] = "D";

    cards[i].append(to_string(i-38));

    }else{

    cards[i] = "J";

    cards[i].append(to_string(i-51));

    }

    }

    int k;

    cin >> k;

    int order[54];

    for (int i = 0; i < 54; i++){

    cin >> order[i];

    }

    for (int j = 0; j < k; j++){

    for (int i = 0; i < 54; i++){

    new_cards[order[i]-1] = cards[i];

    }

    copyCards();

    }

    for (int i = 0; i < 53; i++){

    cout << cards[i] << " ";

    }

    cout << cards[53];

    return 0;

    }

    當你還在擔心能否就業時,達內學員提前被企業錄取;當你轉輾于各大招聘會時,達內學員收到了高薪offer;當你在各大招聘網站投遞簡歷時,達內學員中有人一畢業進入五百強名企。所以選擇很重要。找C++培訓班,選達內就對了。

    版權聲明:轉載文章來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯系刪除或授權事宜。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:C++ 算法題解:打印沙漏、素數對猜想問題詳解
    下一篇:C++中冒泡排序和選擇排序你了解多少?

    超全的C語言標識符知識

    C指針——指針類型轉換

    C指針——指針和結構類型的關系

    C指針——數組和指針的關系

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>