#include
void L(int *p1, int *p2, int k, int n);
void main ()
{
int m[3]={1, 2, 3};
int q[3][2];
int i, j;
L(q[0], m, 2, 3);
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
{
printf ("%d ", q[i][j]);
}
printf ("\n");
}
}
void L(int *p1, int *p2, int k, int n)
{
int i;
if (k==1)
{
for (i=0; i
p1[i]=*(p2+i);
}
else
{
if (k==n)
{
for (i=0; i
p1[i]=*(p2+i);
}
else
{
int j, c, d;
j=1; d=1; c=1;
for (i=n-k; i>=0; i--)
{
L(p1+(k-1)*(j-1)+1, p2+i+1, k-1, n-i-1);
while (j<=d)
{
p1[(j-1)*k]=*(p2+i);
j++;
}
c=(c*(n-i))/(n-i-k+1);
d=d+c;
}
}
}
}
输出结果是这样的
23
13
1 -858993460
而我预计的输出结果应该为
23
12
13
才对 为什么2变成了3,还有一个未赋值,我就搞不懂了
这个没有原题目,是我自己想出的一个问题:
是这样的,共有n一个数a1,a2------an-1, an,
对1<=k<=n,挑出所有满足1<=i1