zoukankan      html  css  js  c++  java
  • 全排列

    dd

    #include <iostream>
    using namespace std;
    void swap(char *a, char *b) 
    {     
        char tmp;     
        tmp = *a;     
        *a = *b;     
        *b = tmp; 
    }  
    void perm(char list[], int beg, int end) 
    {     
        if(beg > end)     
        {          
            for(int i = 0; i <= end; i++)             
                cout << list[i];
            cout << endl;
        }     
        else     
        {         
            for(int i = beg; i <= end; i++)         
            {             
                swap(&list[i], &list[beg]);             
                perm(list, beg + 1, end);             
                swap(&list[i], &list[beg]);         
            }     
        } 
    } 
    int main() 
    {     
        char list[] = {'1', '2', '3'};     
        int lens = sizeof(list) / sizeof(*list);
        perm(list, 0, lens-1);     
        return 0; 
    }

    dd

    #include <iostream>
    #include <vector>
    using namespace std;
    void getPer(vector<int> &num, int index, 
            vector<int> &tmp, vector<vector<int > > &rev)
    {
        if (index == num.size())
            rev.push_back(tmp);
        for (int i = index; i < num.size(); ++i)
        {
            swap(num[i], num[index]);
            tmp.push_back(num[index]);
            getPer(num, index+1, tmp, rev);
            tmp.pop_back();
            swap(num[i], num[index]);
        }
    }
    vector<vector<int> > permute(vector<int> &nums)
    {
        vector<vector<int> > rev;
        vector<int> tmp;
        getPer(nums, 0, tmp, rev);
        return rev;
    }
    
    int main()
    {
        vector<int> vec;
        vec.push_back(1);
        vec.push_back(2);
        vec.push_back(3);
        vector<vector<int> > rev = permute(vec);
        cout << rev.size() << endl;
    }

    dd

    class Solution {
    public:
        void getPermute(vector<int> &num, int index, vector<int> &tmp, vector<vector<int> > &result)
        {
            if (index == num.size())
                result.push_back(num);
            for (int i = index; i < num.size(); ++i)
            {
                swap(num[i], num[index]);
                tmp.push_back(num[index]);
                getPermute(num, index+1, tmp, result);
                tmp.pop_back();
                swap(num[i], num[index]);
            }
        }
        vector<vector<int> > permute(vector<int> &num) {
            vector<vector<int> > result;
            vector<int> tmp;
            getPermute(num, 0, tmp, result);
            return result;
        }
    };
  • 相关阅读:
    时间选择器UIDatePicker的使用
    在app中屏蔽第三方键盘
    plist文件的相关操作
    查看mac上的隐藏文件
    设置ARC有效或者无效
    Linux 下源代码安装编译 ImageMagick6.8.48 且使其支持 JPEG
    Linux Netcat 命令—网络工具中的瑞士军刀
    Linux 好书、经典书籍推荐
    让你拥有超能力:程序员应该掌握的统计学公式
    shell 脚本实现的守护进程
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3963534.html
Copyright © 2011-2022 走看看