输出N个数中取M个数的所有组合,排列情况

一般思路是由组合算排列,现在借助Next_permutation函数由排列到组合。

1.组合

读入一个字符串,一个整数n,输出字符串中取n个字符的所有组合情况


算法:借助Next_permutation函数,构造一个大小为len=str.length()的数组,0表示要输出的数,1表示不要输出的数。


代码如下:


#include 
#include 
#include 
#include 
using namespace std;

int main()
{
	string str;
	int n;
	cin>>str>>n;
	int len=str.length();
	int a[100];
	memset(a,1,sizeof(a));
	for(int i=0;i

2.排列

#include 
#include 
#include 
#include 
using namespace std;

int main()
{
	string str;
	int n;
	cin>>str>>n;
	int len=str.length();
	int a[100];
	char b[100];
	memset(a,1,sizeof(a));
	for(int i=0;i

排列回溯:

#include  
using  namespace std; 

const  int  n=4;//总的元素数 
const  int  m=3;//需要排列的元素个数 

int  num[m];//记录状态的数组,保存各个位置的排列元素 

bool  is_valid(int  count) //判断第count次取数是否合理 
{ 
    for(int i=0;i


你可能感兴趣的:(算法)