- 论坛徽章:
- 1
|
可以去编译了执行,
命令行:
./a.out
执行时间长了点。
以下是C源代码:
#define n 100
#define m 10
#include <stdio.h>
#include <stdlib.h>
int *c;
int g, h;
i()
{ printf("\n");
}
l(int e, int k)
{ int b, a, d, f, j;
for(b=0; b<k; b++) *(c+b) = 1;
do
{ f = 0;
for(b = 0; b < e; b++)
{ if(c == 0) continue;
if(((b+1)<e) && (c[b+1] == 0))
{
for(a=0; a<e; a++)
{ if(c[a]==1)
{
printf("%d ", a+1);
}
}
i();
j = c[0];
c = 0;
c[b+1] = 1;
if(j==0)
{ for(a=0; a <(b-1); a++)
{ if(c[a]==1) break;
}
for(d=0; (d+a) <= (b-1); d++)
{ c[d] = c[d+a];
c[d+a] = 0;
}
}
f = 1;
break;
}
}
}while(f==1);
for(a=0; a<e; a++)
{ if(c[a]==1)
{
printf("%d ", a+1);
}
}
i();
}
main()
{
g = n;
h = m;
c = (int *)malloc(g * sizeof(int));
if(c == 0)
{ printf("Out of memory!\n");
exit(1);
}
l(g, h);
} |
|