pascal选数

来源:百度知道 编辑:UC知道 时间:2024/05/12 10:32:46
在N个数中选出K个数
这个程序如何编
最好解释一下
感激不尽
比如1,5,6,7这4个数中选3个都选到1,5,6;1,5,7;5,6,7

题目说得不清楚
选什么数?选数有什么要求?
-----------------------------
1,5,6,7这4个数中选3个都选到1,5,6;1,5,7;5,6,7
还有一种1,6,7
这个是简单搜索题目

源代码(本人的方法有点笨 复杂度很高 但对于一般的题目已经足够了):
program xuanshu;
const max=20;//最大设为20=>结果最大有20!/(10!)^2种
type arr=array[1..max]of boolean;
var n,k,i:integer;bo:arr;
a:array[1..max]of integer;
procedure search(t:integer;bo:arr;x:integer);
var i:integer;bo1:arr;sc:boolean;
begin
if t=k then begin//如果步数达到k就输出
sc:=false;//控制输出的空格
for i:=1 to n do
if bo[i] then begin
if sc then write(' ') else
sc:=true;
write(a[i]);
end;
writeln;
end else begin
inc(t);//准备下一步的搜索
for i:=x+1 to n do
if not bo[i] then begin
bo1:=bo;bo1[i]:=true;
search(t,bo1,i);
end;
end;
end;
begin
write('Input n:');readln(n);
write('Input k:');readln(k);
for i:=1 to n do re