#include<中皮stdio.h>
unsigned int C(unsigned int n,unsigned int r)
int main()
{
unsigned int n,r,i
for(i=0scanf("%d%d",&n,&r)!=EOFi++)
{
if(n==0&&r==0)
{
break
}
if(n<r)
{printf("error!\n"戚镇)}
else
printf("%d\n",C(n,r))
}
return 0
}
unsigned int C(unsigned int n,unsigned int r)
{
unsigned int i,ans[100]
if(r==0)return 1
if(r==1)return n
ans[0]=1,ans[1]=n
for(i=2i<=ri++)
{
ans[i]=ans[i-1]*(n-i+1)/i
}
return ans[r]
}
以前写过类似的,可以参考一下哈/*
5. 从五种颜色的球中选出3个,输出每种可能的组合数。要求:
1) 定义枚举类型enum Color{Yellow, Blue, Black, Red, Green}
2) 编写函数void Display( Color c), //输笑贺出枚举常量c所对应的颜色字符串。如:租磨c==Yellow时碰型派,则输出”Yellow”字符串
3) 编写函数void combination(int n,int k),实现从n个球中选出k个球的所有组合数。在此函数中调用函数Display(),输出每种组合所对应的颜色,如:
red yellow blue
red yellow black
……*/
#include <stdio.h>
#include <stdlib.h>
enum Color{Yellow, Blue, Black, Red, Green}
//定义一个辅助数组,用来临时存放每一种组合结果
int temp[100]
void Display(enum Color c)
{
switch(c)
{
case Yellow:
printf("Yellow ")
break
case Blue:
printf("Blue ")
break
case Black:
printf("Black ")
break
case Red:
printf("Red ")
break
case Green:
printf("Green ")
break
}
}
//通过递归实现 num记录抽取球的个数,开始的时候num=k
void combination(int n,int k,const int num)
{
int i,j
for(i=ni>=ki--)
{
temp[k-1] = i-1//记录一个位置
if(k>1)
combination(i-1,k-1,num)
else
{
for(j=num-1j>=0j--)
Display(temp[j])
printf("\n")
}
}
}
int main()
{
combination(5,3,3)
system("pause")
return 0
}
Scanner sc = new Scanner(System.in)int numA=4//排列4个
int numC=3//组卖烂合3个
System.out.println("请信薯输入四个个位数:")
List<Integer> list = new ArrayList<>()
for (int i = 0 i < numA i++) {
System.out.printf("第%d个:",i+1)
list.add(sc.nextInt())
}
int a=1
int b=1
for (int i = 0 i < numC i++) {
a=a*(numA-i)
b=b*(i+1)
}
System.out.println("组合数为:"+a/b)
如果是四个中坦漏不同的数的话是这样
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)