作业帮 > 综合 > 作业

pascal里关于集合和记录的问题..口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/05 03:23:19
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只球,问
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.
再问: 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数组} 这一点能不能再详细讲一下?尤其是if yes那儿
再答: begin b:=[i]+[j]+[k];{记录该情况} yes:=true;{yes赋初值true} for p:=1 to m do{枚举a数组每个元素(其实只要p:=1 to n即可 因为n记录了数组有效元素个数)} if b=a[p] then yes:=false;{如果a数组中存在某个元素a[p]=b(说明b已出现过),则标记yes为false} if yes then begin n:=n+1; a[n]:=b; end;{如果该情况没出现过,放入a数组}
再问: 我主要是想问这 if yes then begin n:=n+1; 为什么是yes,我觉得应该是true阿。
再答: yes代表了b是否出现过 是个boolean类型的值 一开始为true 查找过程中 若发现b=a[p]则赋为false 循环结束后进行判断 若yes值为true 说明b没出现过 记录b
pascal里关于集合和记录的问题..口袋中有红黄蓝白黑5种颜色的5只小球,每次从口袋里取出3只球,问 口袋中有红、黄、蓝、白、黑5种颜色的5只小球,每次从口袋中取出3只球,问:最多有几种不同颜色的组合. 口袋中有红,黄,蓝,白,黑5中颜色的球若干个,每次从口袋里取出5个不同颜色的球,问有多少种取法. 一个口袋里有5个小球,另一个口袋里装有4个小球,这些小球的颜色互不相同,问:从两个口袋里任意取一个球,有多少种不同的取法 口袋中有红、黄、蓝、白四种颜色的球若干,每次从口袋里取出2种不同颜色的球,问有多少种取法. 口袋中放有红黄蓝色三种小球,为了保证能取出3个颜色相同的小球,至少需要从口袋里摸出几个球? 口袋中有8只白球,7只红球和5只黄球.为了使袋中至少还有4只同色的球,以及至少还有3只另一种颜色的球,问最多能从袋中取出 口袋中有红,黄,蓝,白,黑5种颜色的球若干个.每次从口袋中取出3个不同颜色的球,问有多少种取法.用c++ 口袋有红黄蓝白黑5种颜色的球若干个,每次从口袋中取出3个不同颜色的球,问有多少种取法?这是排列还是组合 一只口袋里装有大小相同的6个小球,分别涂上红色、黄色、绿色的球各2个,如果任意取出3个小球,那么恰有2个小球同颜色的概率 口袋里有红黄白黑四种颜色的袜子各10只,只许用手摸,至少要从口袋中取出( )只,才能保证配成5双? 一只口袋里,装有标号分别为1 2 3 4 5 6的球,欢欢和乐乐两人轮流从口袋摸球,每次摸出一个数字后放回.