ACM算法是一个超级难的问题。

提问者的表达能力太差,题目描述的很差,最后两个例子也是错的。

更好的描述是,输入n,输出第n个组合(从第0个组合开始计数0,1,2,3,4,5),其中6个项目从0到32,按字典顺序排序。

这不是一个难题,而是一个入门级的问题。

给定第一个k项(记住k项是m),剩下的* * *项有C(32-m,6-k)种情况,其中C(x,Y)代表X和Y的组合数,可以据此编程。

给你举个例子。

#包含?& ltstdio.h & gt

int?binom(int?n,?int?m)

{

int?我,?c?=?1;

如果?(2*m?& gt?n)

n?=?n-m;

为了什么?(我?=?1;?我?& lt=?m;?i++)

c?=?c *(n+1-I)/I;

回归?c;

}

int?主()

{

int?我,?n;

int?答[6]?=?{-1};

什么时候?(scanf("%d ",& ampn)?!=?EOF)

{

n++;

如果?(n?& lt=?0?||?n?& gt?比诺姆(33,?6))

{

printf("无效?input \ n ");

继续;

}

为了什么?(我?=?1;?我?& lt=?5;?i++)

{

为了什么?(甲[我]?=?A[i-1]?+?1;?;?A[i]++)

{

int?t?=?比诺姆(32?-?一个[我],?6?-?I);

如果?(n?& gt?t)

n?-=?t;

其他

打破;

}

printf("%d ",a[I]);

}

printf("%d\n ",A[i-1]?+?n);

}

回归?0;

}