在1-33个几个数中,给出6个不重复的数使得6个数的和为指定的值(例如100),列出所有的这6个数的可能的Delphi代码!!!!
解决方案 »
- 怎样美化已经写好的delphi程序?
- 请大家给推荐个控件,能实现想WORD那样的功能
- 多线程用ADOQUERY执行简单的查询,出现提示“尚未调用coinitialize”
- 关于小数的四舍五入问题!!!
- 基础问题:select查询语句里的G.Code=:Code 什么意思?(详见内)
- 请问如何遍历所有可用硬盘,并且搜索所有文件夹找出文件,只要求找到一个符合的就停止!
- 高手,是不是不能刷新?dbgrid中的数据用dbedit修改后如何刷新?
- 如何让scrollbox支持鼠标滚轮,或者有类似的控件
- 多线程方式绘图
- 请教使用FASTREPORT2.4的一个奇怪问题?
- 急~ 将选中的题及答案打印出来 用RMReport报表控件 不知如何解决~
- 如何将动态创建窗体的两句代码再简化成过程来调用,以减少代码量
sum然后就是循环
a=1时b=2,c=3,d=4,e=5,f=6
5个欠套,
里面注意下的是取值,a取1后,计算完后,a取2计算时,b,c,d,e,f就不需要再取1了
再取的话,只会是重复的数字,而且计算下来,量非常大,要好久,所以得优化下
数组,肯定用数组,具体限制忘了
大概定义个255的把,然后不要用for了,用函数的欠套了,这个学校应该有教把
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Spin, StdCtrls;const
RangeMin = 1;
RangeMax = 33;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
SpinEdit1: TSpinEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure GetSum(Start:Integer; TargetSum : integer; AddCount: Integer; Path : string);
end;var
Form1: TForm1;
StrList : TStringList;implementation{$R *.dfm}
procedure TForm1.GetSum(Start, TargetSum, AddCount: Integer; Path : string);
var
i : integer;
begin
if AddCount>1 then
for i:=Start+1 to RangeMax do
GetSum(i,TargetSum-Start, AddCount-1, Path+'#'+IntToStr(Start))
else
begin
for i:=Start to RangeMax-1 do
if i=TargetSum then
begin
StrList.Add(Path+'#'+IntToStr(i));
break;
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
StrList.Clear;
for i:=RangeMin to RangeMax do
GetSum(i,100,6,'');
Memo1.Lines.Assign(StrList);
end;initialization
StrList := TStringList.Create;
finalization
StrList.Free;
end.
假设目标区间是1-10,即1-10里面的n个数相加得到某个结果Y,
1<=x<=10
X1+X2+..Xn=Y1 2 3 4 5 6 7 8 9 10
递归思路如下:
假设要求1-10之内的3个数相加=15,则首先确定第一个数为1,则目标函数变成2-10的两个数相加=15-1=14,递归到下一层,假设第二个数确定为2,则目标函数变成3-10之间的数为14-2=12。这就是递归思路算法的递归过程是:X1=1, X2=2,X3=3
X2=2,X3=4
X2=2,X3=5
。。
X1=1, X2=3,X3=4
。。X1=2 X2=3 X3=4