组合算法
来源:互联网 发布:淘宝床单四件套 编辑:程序博客网 时间:2024/04/30 03:36
从csdn看到百度饭团 那道竞赛题,觉得可以用组合算法解决,用递归简单实现了组合算法,自己觉得还比较满意,呵呵,
用delphi 写的,
递归算法;大概思路如下:从M中取N个数,分两中情况处理
1. 从M中取一个,从剩下的M-1个数中取N N -1个数,
2.从M-1个数中去N 个数;
N =1 和N=M的情况可以结束递归;
procedure TForm1.presum(M: Integer; N: Integer; aIndex: Integer; aOut:String);
var
tempStr: string;
i: Integer;
begin
if n = 1 then
begin
tempstr:= aOut;
for i:= aIndex to MM do
begin
aOut:= TempStr + copy(aArray, i, 1);
Memo1.Lines.Add('--------------------');
Memo1.Lines.Add(aOut) ;
end;
end
else if m = n then
begin
aOut:= aOut + copy(aArray, aIndex, n);
Memo1.Lines.Add('--------------------');
Memo1.Lines.Add(aOut);
end
else begin
presum(m - 1, n, aIndex + 1, aOut);
aOut:= aOut + copy(aArray, aIndex, 1);
presum(m - 1, n - 1, aIndex + 1, aOut);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
i: Integer;
begin
MM:= StrToInt(edit1.Text); // 简单,MM只能是1到9 aArray:= '';
NN:= StrToInt(edit2.Text); //从MM 中取NN 个数,
for i:= 1 to MM do
aArray:= aArray + IntToStr(i);
Memo1.Lines.Add('presum(' + edit1.Text + ', ' + edit2.Text + ')') ;
presum(MM, NN, 1, aOut);
end;
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 【算法】组合
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法
- 组合算法 combination 源代码
- 阿根廷败于德国原因总结
- Fedora Redhat 下载资源及相关说明
- 德国意志战胜阿根廷野蛮!德国万岁!
- windows 之 mini-TPC
- 全选并改变TR颜色
- 组合算法
- 使用模板和回调函数扩展C++ Builder的控件行为——达到重用目的
- PHP初学者头疼问题总结
- SQL Server中如何取得所有的表的表名的列表(摘)
- [转贴] PHP 编程标准
- c#jmail发送邮件(摘)
- 一个程序中login.php的代码
- Php实现实时时间
- 用PHP实现多级树型菜单