回 帖 发 新 帖 刷新版面

主题:我有个TP的题,告诉我了加50分!~~(很简单的)

给出任一个由字符为元素的集合,输出他的所有子集~[em18][em18][em18]

回复列表 (共4个回复)

沙发

一个可行的穷举方法:
循环穷举二进制数:0、1、10、11、100、101……
然后把字符与二进制数对号入座,若这一位的数字为0则加入到集合里,然后输出集合,清空集合,继续循环……

板凳

不错,穷举二进制数就行了

3 楼

type ay=array[1..1000]of char;   //定义数据类型

procedure jiu(i,j:integer;p,set:ay;n:integer);
{set:由字符为元素的集合,n:集合长度,p:上一步结果,
i、j:有用的Integer,外部调用时都传1作为他们的参数}
          var k:integer;
          begin
               while i<=n do
               begin
                    p[j]:=set[i];
                    i:=i+1;

                    write('(');
                    for k:=1 to j-1 do write(p[k],',');
                    write(p[j]);
                    writeln(')');  //打印到屏幕,你也可以换成其他方式输出

                    pos(i,j+1,p,set1,n);
               end;
          end;

4 楼

我的题之所以这么这么这么……简单,是我穷举都没学好啊~

我来回复

您尚未登录,请登录后再回复。点此登录或注册