127.组合数

127.组合数 

从4个人中选2个人参加活动,一共有6种选法。 

从n个人中选m个人参加活动,一共有多少种选法?下面的函数实现了这个功能。 

请仔细分析代码,填写缺少的部分(下划线部分)。 

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。 

直接写在题面中不能得分。 



public class Main{

static int f(int n,int m){

if(m>n) return 0;

if(m==n) return 1;

return f(n-1,m-1)+f(n-1,m);

}

public static void main(String[] args){

System.out.println(f(4,2));

}

}


递推公式:C(n)(m)=C(n-1)(m-1)+C(n-1)(m)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于你的要求的 C 语言代码,可以实现输入四个数字并循环显示: ```c #include <reg51.h> #define uchar unsigned char #define uint unsigned int sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; uchar code table[]={ 0x3f, //0 0x06, //1 0x5b, //2 0x4f, //3 0x66, //4 0x6d, //5 0x7d, //6 0x07, //7 0x7f, //8 0x6f //9 }; uchar code keymap[]={ 1, 2, 3, 10, 4, 5, 6, 11, 7, 8, 9, 12, 14, 0, 15, 13 }; void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } uchar read_key() { uchar i, j; uchar key = 0xff; for(i=0; i<4; i++) { P1 = ~(1<<i); j = P1 & 0xF0; if(j != 0xF0) { key = i*4 + ((j>>4) & 0x0F); while((P1 & 0xF0) != 0xF0); break; } } return key; } uchar get_digit(uchar num, uchar pos) { uchar digit; switch(pos) { case 0: digit = num / 1000; break; case 1: digit = (num % 1000) / 100; break; case 2: digit = (num % 100) / 10; break; case 3: digit = num % 10; break; default: digit = 0; break; } return digit; } void display(uchar num) { uchar i; for(i=0; i<4; i++) { LSA = i == 0 ? 1 : 0; LSB = i == 1 ? 1 : 0; LSC = i == 2 ? 1 : 0; P0 = table[get_digit(num, i)]; delay(1000); } } int main() { uchar i=0; uchar num[4] = {0, 0, 0, 0}; while(1) { uchar key = read_key(); if(key <= 9) { num[i] = key; i = (i + 1) % 4; } uchar j; for(j=0; j<4; j++) { int number = num[j]*1000 + num[(j+1)%4]*100 + num[(j+2)%4]*10 + num[(j+3)%4]; display(number); delay(500); display(number/10); delay(500); display(number/100); delay(500); display(number/1000); delay(500); } } return 0; } ``` 在这个代码中,我们在 `main` 函数中,对于输入的四个数字,先将它们依次组合成一个四位数字,并按照题目要求,在数码管上循环显示该数字的各个位数组合而成的数字。我们在 `display` 函数中,使用了 `get_digit` 函数来取得一个四位数字中某一位上的数字。同时,我们在各个数字之间加入了一定的延迟,以便于人眼观察区分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值