33,008
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <iterator>
using namespace std;
void combination( int n, int m ){
int *A=new int[n+1], *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 ){
copy( A+1, A+m+1, ostream_iterator<int>(cout, " ") ),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]] );
}
copy( A+1, A+m+1, ostream_iterator<int>(cout, " ") ),cout<<endl;
delete []A; delete []B;
}
int main(int argc, char *argv[])
{
combination( 5, 3 );
return 0;
}