排列组合程序

来源:百度知道 编辑:UC知道 时间:2024/05/07 08:24:42

两个异曲同工的排列组合程序

program1
#include<iomanip.h>
#include<windows.h>
#include<string.h>
#include<stdio.h>
template<class T>
void swap(T& a,T& b)
{
T c;
c=a;
a=b;
b=c;
}
template<class T>
void perm(T* s,int k,int m,int& num)
{
for(int i=k;i<=m;i++)
{
swap(s[i],s[k]);
perm(s,k+1,m,num);
swap(s[i],s[k]);
}
if(k==m)
{
for(int j=0;j<=m;j++)
cout<<s[j]<<" ";
cout<<endl;
num++;
}
}
void main()
{
int num=0;
cout<<"输入字符序列:";
char* s=new char[30];
cin>>s;
DWORD time=GetTickCount();
perm(s,0,strlen(s)-1,num);
time=GetTickCount()-time;
cout<<"不同序列总个数是"<<num