C语言--8人互送礼物有多少种送法?

来源:百度知道 编辑:UC知道 时间:2024/06/20 15:51:21
要算法;程序可不写。。。
用数学方法解也欢迎哦!
对不起,补充说明一下:互送要求不能对送,即

如甲送乙乙不能送甲;

例:a-b b-c c-a d-f f-e e-g g-h h-d可以;

a-b b-a c-d d-f f-e e-g g-h h-c不可以;

如三人互送礼物 只有2种送法;四人互送有6种:

a-b b-c c-d d-a;
a-b b-d d-c c-a;
a-c c-b b-d d-a;
a-c c-d d-b b-a;
a-d d-b b-c c-a;
a-d d-c c-b b-a;

本来就是用数学方法的,叫错排公式,是一个递推的公式
基本形式:d[1]=0; d[2]=1
递归式:d[n]= (n-1)*( d[n-1] + d[n-2])

这个是高中的一个排列组合啊.

不懂你说的互送是什么意思? 可以讲收到的礼物再送出去吗?

如果不能的话 应该是 7*8

纯模拟就可以
8! = 40320
很快就可以计算结束

7!=5040

我觉得三个送礼物应该有两种送法:假设第一个人送礼物出去,那么他有两种选择 2*1*1 = 2
四个人送:3*2*1*1 = 6

那么八个人送就有:7*6*5*4*3*2*1*1 =5040
为什么呢?
因为第1个人面前有七个人可以送,但是第2个人面前只有6个人可以送.....