69,371
社区成员
发帖
与我相关
我的任务
分享
//max=1;
//for (i=0;i<10-n;++i)
//max+=basket[i];
for (i=min;i*(n-1)<apples-i-(n-2)*(n-1)/2&&i<=max;++i)
{
basket[10-n]=i;
find(apples-i,n-1,i+1,max+i);
}
#include <stdio.h>
void find(int apples, int n, int min)
{
static int basket[10];
int i,max;
if (n==1)
{
if (apples>500)
return;
basket[9]=apples;
for (i=0;i<9;++i)
printf("%d ",basket[i]);
printf("%d",basket[9]);
printf("\n");
}
else
{
max=1;
for (i=0;i<10-n;++i)
max+=basket[i];
for (i=min;i*(n-1)<apples-i-(n-2)*(n-1)/2&&i<=max;++i)
{
basket[10-n]=i;
find(apples-i,n-1,i+1);
}
}
}
main()
{
find(1000,10,1);
}