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;
}