设现有一属性集合A={a,b,c,d,e},如何用循环实现求A中包含i个属性的全体子集(i=1,2,3,4,5).
解决方案 »
- 函数返回值类型是Variant,实际上是个已知长度的Array of Double的数组 ,应该怎么办?
- 用indy的server控件绑定 ip、端口 为什么只有一个有效
- SQL的高手麻煩來幫一幫忙...
- 怎么回事? 应用程序正常初始化(0xc000007b)失败。
- 做过XP风格界面的高手能不能谈谈具体应该怎么做?
- 这样的一条语句为什么会出错啊?
- 新建一个工程,不输入任何代码编译,显示fatal error?为什么???
- delphi客户端有没对应ASP.NET的HTTPContext的
- 怎样才能获取SQL SERVER 的所有数据据库
- help me!!有关物流和条形码的问题,决不忘记您的大恩大德........
- 小软件发布(可以写日记、听mp3、通讯录、理财、提醒)兼散分,敬请意见于我,谢谢各位同仁们啦!
- 如何讲TStrings 转换成 String或是TCaption?
TElements=set of TElement;
const
ElementName:array[TElement]of char=('a','b','c','d','e');
function ElementsToStr(Elements:TElements):string;
var i:TElement;
begin
Result:='';
for i:=low(TElement) to high(TElement) do
if i in Elements then Result:=Result+ElementName[i]+' ';
end;
var Elements:TElements;i:Integer;Data:byte absolute Elements;begin
for i:=1 to (1 shl 5) do
begin
Data:=i;
Writeln(ElementsToStr(Elements));
end;
end.
function ElementsToStr(Elements:TElements):string;
var i:TElement;
begin
Result:='';
for i in [a..e] do
if i in Elements then Result:=Result+ElementName[i]+' ';
end;呵呵
我想实现下述功能:
属性集合A={a,b,c,d,e},我想得到包含i个属性的子集,(i=1..5)
即:1个属性{a},{b},{c},{d},{e};
2个属性{a,b},{a,c},{a,d},{a,e},{b,c},{b,d},{b,e},{c,d},{c,e},{d,e};
3个属性{a,b,c},{a,b,d},{a,b,e},{b,c,d},{b,c,e},{c,d,e};
4个属性{a,b,c,d},{a,b,c,e},{b,c,d,e};
5个属性{a,b,c,d,e}.
且用一个string型变量str来存放包含i个属性的子集,最外层循环用变量i来控制。
TElements=set of TElement;
const
ElementName:array[TElement]of char=('a','b','c','d','e');
function ElementsToStr(Elements:TElements):string;
var i:TElement;
begin
Result:='';
for i in [a..e] do
if i in Elements then Result:=Result+ElementName[i]+' ';
end;
function GetSize(int:byte):Integer;
var i:Integer;
begin
Result:=0;
for i:=0 to 7 do
begin
if ((1 shl i) and int)<>0 then
Inc(Result);
end;
end;
function GetElements(Size:Integer):String;
var Elements:TElements;i:Integer;Data:byte absolute Elements;
begin
Result:='';
for i:=1 to (1 shl 5)-1 do
begin
Data:=i;
if GetSize(Data)=Size then
Result:=Result+'{'+TrimRight(ElementsToStr(Elements))+'} ';
end;
end;
begin
Writeln(GetElements(1));
Writeln(GetElements(2));
Writeln(GetElements(3));
Writeln(GetElements(4));
Writeln(GetElements(5));
end.