征求排列组合算法

蔡健常熟 2007-03-14 04:25:00
有N个任意数字 (1,23,21,87,...)
排列出所有N个数字相加的可能,
比如生成如下格式:
1+23
1+23+21
1+23+21+87
1+21+87
1+87
23+21
23+21+87
21+87
.....
...全文
431 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hertcloud 2007-03-17
  • 打赏
  • 举报
回复


Private Sub combine(ByVal pos As Integer, ByVal h As Integer)
Dim num1 As Integer
If (pos = Me.r) Then
num1 = 0
Do While (num1 < Me.r)
Console.Write(Me.C(num1))
num1 += 1
Loop
Console.WriteLine("")
Else
num1 = h
Do While (num1 <= ((Me.n - Me.r) + pos))
If Not Convert.ToBoolean(Me.used(num1)) Then
Me.C(pos) = num1
Me.used(num1) += 1
Me.combine((pos + 1), (num1 + 1))
Me.used(num1) -= 1
End If
num1 += 1
Loop
End If
End Sub


蔡健常熟 2007-03-17
  • 打赏
  • 举报
回复
我找到这段C的代码,谁能转化成B



组合:从n个不同元素中取r个不重复的元素组成一个子集,而不考虑其元素的顺序,称为从n个中取r个的无重组合,例如OR = {1,2,3,4}, n = 4, r = 3则无重组合为:

{1,2,3}; {1,2,4}; {1,3,4}; {2,3,4}.

算法如下:

int n, r;
int C[5];
char used[5];

void combine(int pos, int h)
{
int i;
/*如果已选了r个元素了,则打印它们*/
if (pos==r) {
for (i=0; i<r; i++)
cout<< C[i];
cout<< endl;
return;
}
for (i=h; i<=n-r+pos; i++) /*对于所有未用的元素*/
if (!used[i]) {
/*把它放置在组合中*/
C[pos] = i;
/*使用该元素*/
used[i]++;
/*搜索第i+1个元素*/
combine(pos+1,i+1);
/*恢复递归前的值*/
used[i]--;
}
}
新鲜鱼排 2007-03-16
  • 打赏
  • 举报
回复
关注一下,看到过类似问题,不过是在数据库方面的。
蔡健常熟 2007-03-16
  • 打赏
  • 举报
回复
顶下,继续征求
蔡健常熟 2007-03-15
  • 打赏
  • 举报
回复
我写出来了,用一个二维矩阵做与运算,不过30个数字就是理论上的能计算了,有好的算法吗?
atlantise522 2007-03-14
  • 打赏
  • 举报
回复
#include <iostream>

using namespace std;

int main()
{
int matrix[10]={0,1,2,3,4,5,6,7,8,9};
int m,n;

for(m=0;m<10;m++)
{
for(n=m;n<10;n++)
{
for(int i=0;i<m;i++)
{
cout<<i;
}
cout<<n<<endl;
}
}
return 0;
}
蔡健常熟 2007-03-14
  • 打赏
  • 举报
回复
我不是仅仅需要值,我要的是"N+N+N"这个序列.
麦田之兔 2007-03-14
  • 打赏
  • 举报
回复
mark
CathySun118 2007-03-14
  • 打赏
  • 举报
回复
dim a(n-1) as integer,b(n-1) as integer
dim i as integer,j as integer
dim sum as long
先用n个数字填充a,b
然后
for i=0 to n
sum=0
forj=i+1 to n
sum=sum + a(i)+b(j)
debug.print sum
next
next

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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