用Pascal编程(指针来做)

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:32:13
狐狸捉兔子:围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这10个洞之中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子在哪个洞?

好经典的题呀
当年我可是自己想出来的
其实题目不难
年轻人最好不要偷懒

用队列来做
用一个FOR循环来找洞
找过的用BOOLEAN变量标记
最后没标记的就是兔子的所在

楼上分析很全面,我附一段程序
program fox_rabbit;
var t,p,g,i:integer;
a:array[1..10]of boolean;
begin
t:=0;
p:=0;
i:=0;
fillchar(a,sizeof(a),true);
repeat
i:=i+p+1;
g:=(i-1)mod 10+1;
if(a[g])then
begin
inc(t);
a[g]:=false;
end;
inc(p);
if(t=9)then
break;
until i>=1000;
for i:=1 to 10 do
if(a[i])then
writeln(i,' ');
end.

program huli;
type
point=^node;
node=record
data:integer;
next:point;
end;
var
p,q,head:point;
j,i:integer;
begin
head:=nil;
new(p);
head:=p;
for i:=1 to 9 do begin
q:=p;
new(p);q^.next:=p;