美文网首页
对数组进行全排列

对数组进行全排列

作者: lxr_ | 来源:发表于2022-04-22 13:14 被阅读0次

如对数组{1,2,3}进行全排列得到
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2

参考:https://www.bilibili.com/video/BV1dx411S7WR?spm_id_from=333.337.search-card.all.click

代码:

#include <iostream>

#include <vector>

using namespace std;

void swap(vector<unsigned long long>& nn, int i, int j)
{
    int temp = nn[i];
    nn[i] = nn[j];
    nn[j] = temp;
}
//对数组nn进行全排列
void perm(vector<unsigned long long>& nn, unsigned long long index, unsigned long long n)
{
    if (index == n)
    {
        for (int i = 0; i < n + 1; i++)
        {
            cout << nn[i] << " ";

        }
        cout << endl;
    }
    else
    {
        for (int i = index; i <= n; i++)
        {
            //step1:数组中其他元素与第一个元素交换
            swap(nn, i, index);

            perm(nn, index + 1, n);

            //step2:数组中其他元素与第一个元素复原交换
            swap(nn, i, index);
        }
    }


}

int main(int argc, char** argv)
{

    vector<unsigned long long> nn;
    nn.push_back(1);
    nn.push_back(2);
    nn.push_back(3);
    perm(nn, 0, 2);

    return 0;
}

相关文章

  • 对数组进行全排列

    如对数组{1,2,3}进行全排列得到1 2 31 3 22 1 32 3 13 2 13 1 2参考:https:...

  • Java全排列递归算法

    刷题!刷题!发现对于数组元素的全排列很多题目都有涉及到,所以详细研究一下对一个数组进行全排列,我们可以这样考虑,我...

  • 递归-全排列

    对数组{1,2,3}进行全排列 STL next_permutation

  • leetcode 46. 全排列 javascript

    给定数组[1,2,3,4]策略是把所有元素分别提到最前面,进行剩下的数组的全排列1 + [2,3,4] 的全排列2...

  • 要成功就做一百题-96

    题目名称 求数组的全排列 描述 全排列,顾名思义就是将元素按照顺序进行排列,展示各种情况。比如有三个数字[1,2,...

  • 数组全排列

    递归实现 库函数实现 获取所有元素的全排列:itertools.permutation(lst, n) ——n:...

  • 8、数组排序

    sort ---根据数组中的元素进行升序排列rsort---根据数组中的元素进行降序排列 关联数组 asort--...

  • 输出数组的全排列

    思想: n 个元素数组全排列 = 第 1 个前缀 + 后 n - 1 个元素全排列 输出第 k 个元素之后的全排列...

  • 整型数组排列组合输出最小值

    一、题目内容 题目描述 有一整型数组,现在进行全排列组合,获得排列组合后最小的一个数。 输入描述 第一行输入数组个...

  • 全排列

    对几个数进行全排列,如1,2,3进行全排列。可以采用递归加循环的方式.一次排列的结束就输出一次。else中的for...

网友评论

      本文标题:对数组进行全排列

      本文链接:https://www.haomeiwen.com/subject/eyqnertx.html