63,596
社区成员




#include <windows.h>
#include <iostream>
#include <iterator>
using namespace std;
void combination( int n, int m ){
int *c=new int[m+2], j;
for( j=1; j<=m; ++j ) c[j]=j-1;
c[m+1]=n;
R2: ;//copy( c+1, c+m+1, ostream_iterator<int>(cout," ") ),cout<<endl;
if( m&1 )
if( c[1]+1<c[2] ){
++c[1]; goto R2;
}
else{
j=2; goto R4;
}
else
if( c[1]>0 ){
--c[1]; goto R2;
}
else{
j=2; goto R5;
};
R4: if( c[j]>=j ){
c[j]=c[j-1]; c[j-1]=j-2; goto R2;
}
else
++j;
R5: if( c[j]+1<c[j+1] ){
c[j-1]=c[j]; c[j]=c[j]+1; goto R2;
}
else{
++j;
if( j<=m ) goto R4;
}
delete []c;
}
int main(int argc, char *argv[])
{
int time=GetTickCount();
combination( 50, 10 );
cout<<GetTickCount()-time<<" ms\n";
return 0;
}
#include <stdio.h>
#define N 50
#define M 10
long long count;
void output(int index[])
{
#ifdef OUTPUT_DATA
int i;
for(i=0;i<M-1;i++){
printf("%d,",index[i]);
}
printf("%d\n",index[i]);
#endif
count++;
}
int main()
{
int index[M];
int i,j;
for(i=1;i<M;i++)index[i]=i+1;
do{
for(j=1;j<index[1];j++){
index[0]=j;
output(index);
}
for(j=1;j<M-1;j++){
if(index[j+1]-index[j]>1)break;
}
index[j]++;
for(i=1;i<j;i++)index[i]=i+1;
}while(j<M-1||index[M-1]<=N);
printf("Total %lld\n",count);
return 0;
}
int index[10];
int i,j;
for(i=1;i<10;i++)index[i]=i+1;
do{
for(j=1;j<index[1];j++){
index[0]=j;
output(index);
}
for(j=1;j<9;j++){
if(index[j+1]-index[j]>1)break;
index[j]++;
}
if(j==9){
index[9]++;
if(index[9]>100)break;
}
}while(1);
#include <stdio.h>
#define MAX_N 100
int g_arr[MAX_N] = {0};
__int64 g_cnt = 0;
void Recur(int* arr, int arr_size, int req_cnt)
{
if (req_cnt > 0)
{
//数据没有选够,从剩下的数据中继续选
//先选中最小的
arr[0] = 1;
//然后从剩下的arr_size - 1个数据中选req_cnt-1个数据
Recur(arr+1, arr_size - 1, req_cnt-1);
//回溯一下,跳过刚才选的那个最小数的情况
arr[0] = 0;
if ((arr_size - 1) >= (req_cnt ))
{
Recur(arr+1, arr_size - 1, req_cnt);
}
}
else
{
//找到一组完整数据
++g_cnt;
//输出组合
for(int i=0; i<MAX_N; i++)
{
if (g_arr[i] == 1)
{
printf("%d\t", i);
}
}
printf("\n");
}
}
int main(int argc, char* argv[])
{
Recur(g_arr, MAX_N, 5);
printf("total group = %I64u\n", g_cnt);
return 0;
}