求分发苹果的算法(什么语言都可以)

zzhgb 2007-09-21 08:22:30
有个算法不知如何实现,谁帮忙啊

“将m个苹果发给n个人(每人可以拿到0-m个苹果)”

要获得所有的可能性,结果可以是数组或者。。。

分不够可以补
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
牛三儿 2007-12-28
  • 打赏
  • 举报
回复
楼上说的也是我需要的,若有答案,能往:cr_hunter@163.com里面发一份的话,将不胜感激!
zzhgb 2007-09-21
  • 打赏
  • 举报
回复
有n个数组如a1(123,34,53,464)
a2(34,35,56,6,0,5,45)...a3,a4...
我要获得他们的所有组合a1(i)a2(j)a(k)....

上边的哥哥帮忙啊
zzhgb 2007-09-21
  • 打赏
  • 举报
回复
鸟还是老的好,我想了一夜,我对自己真失望
Tiger_Zhao 2007-09-21
  • 打赏
  • 举报
回复
Option Explicit

Sub Main()
Distribute 3, 3
End Sub

Sub Distribute(ByVal m As Long, ByVal n As Long)
Dim a() As Long
ReDim a(n - 1)

TryOne a, n, 0, m
End Sub

Sub TryOne(a() As Long, ByVal n As Long, ByVal i As Long, ByVal remnant As Long)
If remnant = 0 Then
PrintOne a, n
Exit Sub
End If
If i = (n - 1) Then
a(i) = remnant
PrintOne a, n
a(i) = 0
Exit Sub
End If

Dim j As Long
For j = 0 To remnant
a(i) = j
TryOne a, n, i + 1, remnant - j
Next
a(i) = 0
End Sub

Sub PrintOne(a() As Long, ByVal n As Long)
Dim i As Long
For i = 0 To n - 1
If i > 0 Then Debug.Print ",";
Debug.Print a(i);
Next
Debug.Print
End Sub
guyehanxinlei 2007-09-21
  • 打赏
  • 举报
回复
UP

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧