pascal里关于集合和记录的问题..口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问:最多有几种不同颜色的组
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 19:50:29
pascal里关于集合和记录的问题..口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问:最多有几种不同颜色的组
pascal里关于集合和记录的问题..口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问
口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问:最多有几种不同颜色的组合.他给出的程序我有点看不懂.
const
m=30;
type
color=(re,ye,be,wh,bc);
colset=set of color;
arrset=array[1..m] of colset;
var
p,n:integer;
a:arrset;
i,j,k:color;
b:colset;
yes:boolean;
begin
for p:=1 to m do a[p]:=[];
n:=0;
for i:=re to bc do
for j:=re to bc do
if ij then for k:=re to bc do
if (kj) and (ki) then
begin
b:=[i]+[j]+[k];
yes:=true;
for p:=1 to m do
if b=a[p] then yes:=false;
if yes then begin n:=n+1;
a[n]:=b;
end;
end;
for p:=1 to n do
begin
for i:=re to bc do
if i in a[p] then
case i of
re:write('red':20);
ye:write('yellow':20);
be:write('blue':20);
wh:write('whilte':20);
bc:write('black':20)
end;
writeln;
end;
writeln('total num is:',n);
end.
pascal里关于集合和记录的问题..口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问:最多有几种不同颜色的组
const
m=30;
type
color=(re,ye,be,wh,bc);{枚举类型,定义5种颜色}
colset=set of color;{元素为color类型的集合}
arrset=array[1..m] of colset;{元素为colset类型的数组}
var
p,n:integer;
a:arrset;
i,j,k:color;
b:colset;
yes:boolean;
begin
for p:=1 to m do a[p]:=[];
n:=0;{初始化}
for i:=re to bc do{枚举第一种颜色i}
for j:=re to bc do{枚举第二种颜色j}
if ij {判重}then for k:=re to bc do {枚举第三种颜色k}
if (kj) and (ki) then{判重}
begin
b:=[i]+[j]+[k];{记录该情况}
yes:=true;
for p:=1 to m do
if b=a[p] then yes:=false;
if yes then begin n:=n+1;
a[n]:=b;
end;{如果该情况没出现过,放入a数组}
end;
for p:=1 to n do
begin
for i:=re to bc do
if i in a[p] then
case i of
re:write('red':20);
ye:write('yellow':20);
be:write('blue':20);
wh:write('whilte':20);
bc:write('black':20)
end;{输出}
writeln;
end;
writeln('total num is:',n);
end.