1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        「C++小例子」全排列【001】

        共 3639字,需瀏覽 8分鐘

         ·

        2021-04-25 13:15

        Part1題目

        全排列

        用1、2、3三個數(shù)字

        可以組成多少個沒有重復數(shù)字的三位數(shù)?

        打印出所有的可能

        Part2解答

        參考Demo - C++

        #include <iostream>
        #include <vector>
        using namespace std;

        vector<int> temp; // 臨時保存已經(jīng)選擇的數(shù)

        // backtracking:回溯
        void backtracking(vector<vector<int> > &res, vector<bool> &isused, vector<int> &nums)
        {
            // 當temp數(shù)組的長度等于期望數(shù)組的長度時 return
            if (temp.size() == nums.size())
            {
                res.push_back(temp);
                return;
            }
            // 遍歷所有選擇
            for (int i = 0; i < nums.size(); ++i)
            {
                // 對沒有選擇過的元素再進行抉擇:選擇它|不選擇它
                if (isused[i])
                {
                    // 選擇該元素 選擇后標記該元素為已選擇 同時進行下一元素的抉擇
                    temp.push_back(nums[i]);
                    isused[i] = false;
                    backtracking(res, isused, nums);
                    // 回復原來狀態(tài):未選擇 同時從temp中pop出
                    isused[i] = true;
                    temp.pop_back();
                }
            }
        }

        // permute:返回nums數(shù)組構成的全排列
        vector<vector<int> > permute(vector<int> &nums)
        {
            vector<vector<int> > res;
            vector<boolisused(nums.size(), true);
            backtracking(res, isused, nums);
            return res;
        }

        // 主函數(shù)
        int main()
        {
            // 初始化nums=[1,2,3]
            vector<int> nums;
            for (int i = 1; i <= 3; ++i)
            {
                nums.push_back(i);
            }

            // 結果返回值
            vector<vector<int> > ans;
            ans = permute(nums);

            // 打印結果
            for (int i = 0; i < ans.size(); ++i)
            {
                for (int j = 0; j < ans[i].size(); ++j)
                {
                    cout << ans[i][j] << " ";
                }
                cout << endl;
            }

            return 0;
        }

        運行結果

        運行環(huán)境

        Visual Studio Code

        Part3結語

        難度:medium

        歡迎小伙伴們提供其余的解法

        這里海轟提供的代碼僅供參考,希望對您有所幫助,如有錯誤歡迎小伙伴指正~

        我是海轟?(?ˊ?ˋ)?,如果您覺得寫得可以的話,請點個贊吧

        謝謝支持??

        寫留言|查看留言

        瀏覽 36
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            丁香花中文字幕在线播放 | 欧美国产日韩在线观看 | 欧美性按摩 | 张津瑜| 看免费操逼的 | 亚洲一区在线播放 | 国产精品初高中害羞小美女文 | 一边吃奶一边添p好爽高清视频 | 国产精品久久久久久最猛 | 午夜性做爰电影 |