有多少种方法可以将4个相同的橙子和6个不同的苹果分成5个不同的方框
我知道你发现苹果的数量是5 ^ 6。
解决方案告诉我,橘子的方法是8选择4。
然后将它们相乘以得到解决方案,即1,093,750
我的问题是...... 8来自哪里,8选择4 ???
答案 0 :(得分:1)
将4个相同的橙子分成5个不同的方框的方法数量与问题的非负整数解决方案的数量相同:
x 1 + x 2 + x 3 + x 4 + x 5 = 4
假设我采用4个1和4个分离+。然后在1和+的排序与方程的解之间存在一对一的对应关系。
例如,“1 ++ 11 + 1 +”对应于“1 + 0 + 2 + 1 + 0”。
有8个!如何订购这8个符号,并且因为有4个相同的1和4个相同的+,我们需要除以4!两次。
8! /(4!×4!)= 8选择4
通常,将n个相同对象放入r个不同的区间的方法的数量是[(n + r - 1)选择(r - 1)]。 (r - 1指的是“分离'+'符号的数量。”)
答案 1 :(得分:0)
虽然有一个简单的数学解决方案,但我给你编程解决方案,因为其他答案将是主题:
考虑盒子中橙子的每种可能排列,并用递归来做:
1.在最后一个方框中没有橙色:它类似于你有4个相似的橙子和4个不同的盒子。
2.最后一个方框中的橙色:它类似于你有3个相似的橙子和4个不同的方框。
依旧......
现在让它编程使用这样的函数:
int orangeRecursion(int numOfOranges,int numOfBoxes){
if(numOfOranges == 0)
return 1;
if(numOfBoxes == 0)
return 0;
int num = 0;
for(int i = 0 ; i<=numOfOranges ; i++){
num += orangeRecursion(numOfOranges - i,numOfBoxes - 1)
}
return num;
}