7楼是错的.结果应该是9510.
3楼的思路是正确的,但应该可以写出个递归函数什么的.再想想.
这个还是一个数学问题
解法是这样的(还是排列组合,比较长,我分开写了)
c(48,3)=48!/(45!*3!)=48*47*46/6=17296
c(7,3)=7*6*5/6=35
c(7,2)*41=21*41=861
c(4,3)=4
c(4,2)*44=6*44=264
c(12,3)=12*11*10/6=220
c(12,2)*36=12*11/2*36=66*36=2376
c(8,3)=8*6*7/6=56
c(8,2)*40=8*7/2*40=28*40=1120
c(11,3)=11*10*9/6=165
c(11,2)*37=11*10/2*37=55*37=2035
c(6,3)=4*5*6/6=20
c(6,2)*42=5*6/2*42=15*42=630
结果=17296-35-4-220-56-165-20-861-264-2376-1120-2035-630=9510
思路是先从所有人中选择3个人,但是这显然是错的。所以要去掉所有3个或2个是同一个班级的情况
以都在一班为例:
C(7,3)表示3个都在1班;
C(7,2)表示有两个在1班,但是此时剩下的一个人有48-7=41种选择,所以要乘以41
依次类推。
数学算法比较麻烦,对于班数过大的只能靠变成解决。
[此贴子已经被作者于2006-1-24 17:11:41编辑过]