组合数学学习之排列、组合、圆周排列实现

本文介绍了组合数学中的排列、组合及圆周排列的概念,并提供了C++实现这些算法的详细代码,包括全排列、组合及基于全排列的圆周排列的递归实现。
摘要由CSDN通过智能技术生成

本学期上了“组合数学”课程。感觉其中所提及的许多排列组合问题是许多问题的原型。因此,本篇博客主要练习基本的排列、组合以及圆周排列算法。


一、排列算法实现:

    排列算法就是一列数据的全排列。要求输出数据的每一种排序形式。假设输入数组的长度为:length;待排列数组的长度为:num。全排列的实现就是待排列数组的每一位j(1<=j<=num)都可在整个输入数组张取值,只要当前值与前面已取值不重复即可。

    具体实现代码;

******Header.h******

void pailie(int*, int, int);

void set_value_pailie(int*, int, int*, int, int);

bool hassame(int*, int, int);


******tools.cpp******

bool hassame(int* b, int before, int n)
{
    if (before < 0)
        return false;
    else
    {
        for (int i = 0; i <= before; i++)
        {
            if (b[i] == n)
                return true;
        }
        return false;
    }
}


******functions.cpp******

#include<iostream>
#include"Header.h"

using namespace std;

void pailie(int* a, int length, int num)
{
    int* b = new int[num];
    int current = 0;
    
    for (int i = 0; i < length; i++)
    {
        b[current] = a[i];
        set_value_pailie(a, lengt

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值