本学期上了“组合数学”课程。感觉其中所提及的许多排列组合问题是许多问题的原型。因此,本篇博客主要练习基本的排列、组合以及圆周排列算法。
一、排列算法实现:
排列算法就是一列数据的全排列。要求输出数据的每一种排序形式。假设输入数组的长度为: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