当前位置: 代码迷 >> C语言 >> [求助]这个怎么编呀??
  详细解决方案

[求助]这个怎么编呀??

热度:116   发布时间:2005-04-26 20:04:00.0
[求助]这个怎么编呀??
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 先谢谢了!!!
搜索更多相关的解决方案: 苹果  盘子  

----------------解决方案--------------------------------------------------------

#include<stdio.h> #include<math.h>

int numbers(int plate_num, int apple_num){ int sum = 0, i = 1, apple_cur = 0; if(apple_num == 1)return 1; if(plate_num == 1)return 1; if(plate_num == 2)return (floor(apple_num/2)); if(apple_num == plate_num)return 1;

if(plate_num >= 3){ i = plate_num; apple_cur = apple_num - i; for(; i > 0; i--){ if(i > apple_cur){ i = apple_cur; } sum += numbers(i, apple_cur); } }

return sum; }

main(){ int plate_num, apple_num, i; int sum = 0; printf("please input the numbers of plate and apple:\n"); scanf("%d%d", &plate_num, &apple_num);

if(plate_num > apple_num){ plate_num = apple_num; }

for(i = plate_num; i > 0; i--){ sum += numbers(i, apple_num); }

printf("there is %d way to array them.\n", sum); printf("k is %d.\n", sum); }


----------------解决方案--------------------------------------------------------
有些类似于汉诺塔的问题
----------------解决方案--------------------------------------------------------
以下是引用weizheng在2005-4-29 21:14:21的发言: 有些类似于汉诺塔的问题
思路严重偏离
----------------解决方案--------------------------------------------------------
对,都要递归调用,这样就行了
----------------解决方案--------------------------------------------------------
  相关解决方案