字符串的所有可能组合输出

分递归法实现和比特位法实现


// 字符的所有组合.cpp : 定义控制台应用程序的入口点。
//程序猴6.28

#include "stdafx.h"
#include 
using namespace std;
void Comb(char* pStr,int num,vector &result);
void Combination(char* pStr)
{
	if (!pStr)
		return;
	vector result;
	int i,length = strlen(pStr);
	for (i=1;i<=length;i++)
	   Comb(pStr,i,result);
}

void Comb(char* pStr,int num,vector &result)
{
	if (!pStr)
	  return;
	if (num == 0)
	{
		static int sf = 1;
		printf("第%d个组合\n",sf++);
		vector::iterator iBegin = result.begin();
		for (;iBegin!=result.end();iBegin++)
		{
			printf("%c",*iBegin);
		}
		printf("\n");
		return;
	}
	if (*pStr=='\0')
	 return;
	result.push_back(*pStr);//本字符若被纳入结果中,则下一步从下一个字符开始获取num-1个字符
	Comb(pStr+1,num-1,result);
	result.pop_back();      //本字符若未被纳入结果中,则下一步从下一个字符开始获取num个字符
	Comb(pStr+1,num,result);
}

void Comb_Bit(char* pStr,int Bit,int length)
{
	if (!pStr)
	  return;
	vector result;
	int j;
	int FF=0;
	for(j=0;j::iterator Iter=result.begin();
	static int sf = 1;
	printf("第%d个组合\n",sf++);
	for (;Iter!=result.end();Iter++)
	{
		printf("%c",*Iter);
	}
	printf("\n");
}

int _tmain(int argc, _TCHAR* argv[])
{
	char A[] = "123";
	printf("递归法实现:\n");
	Combination(A);
	printf("\n");
	printf("比特位法实现:\n");
	int length = strlen(A);
	for (int i=1;i<(1<

运行结果:

字符串的所有可能组合输出_第1张图片



你可能感兴趣的:(数据结构与算法)