用递归实现排列组合取数(组合显示 例5选3等)
2005-01-14 13:26
204 查看
例:
2选1
结果1
2
5选2
结果1$2
1$3
1$4
1$5
2$3
2$4
2$5
3$4
3$5
4$5
用BCB3实现
void __fastcall TForm1::Button1Click(TObject *Sender)
{
temp = "";
count = 0;
for(int i=0;i<100;i++)bt[i]="";
Memo1->Lines->Clear();
int x,y;
x = Edit1->Text.ToIntDef(1);
y = Edit2->Text.ToIntDef(1);
Fun(x,y);
Memo1->Lines->Add("总共"+AnsiString(count)+"条记录");
j=0;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::Fun(int a,int b)
{
if (a==b)
{
for(int i=b;i>=1;i--)
temp =temp + " $ " + (AnsiString)i;
Memo1->Lines->Add(temp);
temp ="";
count++;
return "";
}
else if (b==0)
{
Memo1->Lines->Add(temp);
temp = "";
count++;
return "";
}
else
{
temp = Fun(a-1,b);
bt[j]= " $ "+AnsiString(a);
j++;
int i=0;
while(bt[i]!="")
{
temp = temp + bt[i];
i++;
}
temp = Fun(a-1,b-1) + temp ;
bt[j]="";
j--;
}
}
2选1
结果1
2
5选2
结果1$2
1$3
1$4
1$5
2$3
2$4
2$5
3$4
3$5
4$5
用BCB3实现
void __fastcall TForm1::Button1Click(TObject *Sender)
{
temp = "";
count = 0;
for(int i=0;i<100;i++)bt[i]="";
Memo1->Lines->Clear();
int x,y;
x = Edit1->Text.ToIntDef(1);
y = Edit2->Text.ToIntDef(1);
Fun(x,y);
Memo1->Lines->Add("总共"+AnsiString(count)+"条记录");
j=0;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::Fun(int a,int b)
{
if (a==b)
{
for(int i=b;i>=1;i--)
temp =temp + " $ " + (AnsiString)i;
Memo1->Lines->Add(temp);
temp ="";
count++;
return "";
}
else if (b==0)
{
Memo1->Lines->Add(temp);
temp = "";
count++;
return "";
}
else
{
temp = Fun(a-1,b);
bt[j]= " $ "+AnsiString(a);
j++;
int i=0;
while(bt[i]!="")
{
temp = temp + bt[i];
i++;
}
temp = Fun(a-1,b-1) + temp ;
bt[j]="";
j--;
}
}
相关文章推荐
- 函数和递归(组合数,孪生素数,用指针实现变量交换,求解二院一次方程组)
- Angular 实现类似博客评论的递归显示
- 组合逻辑六三编码器实现数码管显示对应数字
- 用递归实现排列组合
- 12个字母任选5个进行排列组合,不可重复 javascript 递归实现
- 递归求排列组合-组合篇
- 基于递归思想的组合、H变换等几个算法实现
- 经典递归算法之排列,组合,集合和换零钱, Python yield实现.
- Angular实现类似博客评论的递归显示及获取回复评论的数据
- java的api操作HDFS实现递归打印目录并实现在Linux下的显示效果
- 组合非递归实现
- 从数组中取出n个元素的所有组合(递归实现)
- 实现显示字数的输入框介绍关于自定义组合view的实现
- 字符串的组合 位图和递归分别实现
- 从数组中取出n个元素的所有组合(递归实现)
- 原始kd树的构建和显示(递归实现)
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- 递归实现获取短信验证码按钮时间倒计时显示功能
- 全组合的递归实现(ruby)
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类