排列和组合

排列,一般地,从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(permutation)。特别地,当m=n时,这个排列被称作全排列(all permutation)。
在这里插入图片描述
组合(combination)是一个数学名词。一般地,从n个不同的元素中,任取m(m≤n)个元素为一组,叫作从n个不同元素中取出m个元素的一个组合。我们把有关求组合的个数的问题叫作组合问题。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
Arrangement

std::stack<int> g_Array;
//A(m, n)n个数中选择m个进行排列,n = high - low, m = number
void arrangement(int *array, int low, int high, int number)
{	//array,目标序列。low,目标序列下限,high,目标序列上限,number,选择的数量
	if (g_Array.size() == number)
	{
		std::stack<int> t_Array = g_Array;
		while (t_Array.empty() == false)
		{
			std::cout << t_Array.top() << " ";
			t_Array.pop();
		}
		std::cout << std::endl;
	}
	else
	{
		for (int i = low; i < high; i++)
		{
			g_Array.push(array[i]);
			arrangement(array, i + 1, high, number);
			g_Array.pop();
		}
	}
}

combination

//组合数
int combination(int n, int m)
{
	if(m == 0 || m == n)
	return 1;
	else
	{
		return combination(n - 1, m) + combination(n - 1, m - 1);
	}
}

猜你喜欢

转载自blog.csdn.net/WxqHUT/article/details/88092889