您的位置:首页 > 其它

速度暴快的组合生成算法

2007-10-05 17:41 330 查看
近日在维普数据库里看资料,偶然发现了一个介绍组合生成算法的文章,照着算法流程,自己写了一下,发现速度果然不错。

C++实现代码:


#include <cstdlib>


#include <iostream>




using namespace std;






void combination( int n, int m )...{


int *A=new int[n+1];


int *B=new int[m+1];


int i, j;


for( i=1; i<=n; ++i )


A[i]=i;


for( i=1; i<=m; ++i )


B[i]=m;




while( B[1]<n )...{


for( i=1; i<=m; ++i )


cout<<A[i]<<" ";


cout<<endl;


j=m;


while( B[j]==n )


--j;


++B[j];


for( i=j+1; i<=m; ++i )


B[i]=B[j];


swap( A[j], A[B[j]] );


}


delete []A;


delete []B;


}




int main(int argc, char *argv[])




...{


combination( 20, 4 );


system("PAUSE");


return EXIT_SUCCESS;


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: