求Pascal高手帮我解决下这道题目谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/06/05 05:51:59
围绕着山顶有10个洞,一只狐狸和一只兔子各住一个洞。狐狸总想吃掉兔子。一天兔子对狐狸说:“你想吃我有一个条件,先把洞从1~10编上号,你从10号洞出发,先到1号洞找我;第二次隔1个洞找我,第三次隔2个洞找我,以后依此类推,次数不限。若能找到我,你就可以饱餐一顿。不过在没有找到我以前不能停下来。”狐狸满口答应就开始找了,它从早到晚找了1000次洞,累得昏了过去也没有找到兔子。请问,免子躲在几号洞里?
(请写出程序)
楼下的大哥请给我Pascal的程序行不?楼下的楼下的大哥你给的过程运行后不对啊。

这题目我刚做过#77 是在算法设计上很有名气的经典约瑟夫问题,猴子选大王,持密码报数、狐狸追兔子都是它的变例。
狐狸追兔子:
program y5_7;
var i,j:integer;
a:array[0..9] of integer;
begin
for i:= 0 to 9 do a[i]:=1;
j:=0;
for i:= 1 to 1000 do begin
j:=(j+i) mod 10 ;
a[j]:=0;
end;
for i:= 1 to 9 do if a[i]=1 then write(i:3);
if a[0]=1 then write(' 10');

end.

变量说明
A:代表10个洞的一维数组;
I:循环控制变量;
N:洞的总数
K:计算每次寻找所到洞的坐标,K=K+I(K初值为0);

算法设计
1. 首先将A(1)、A(2)、……、A(10)元素全部赋值为1,表示所有洞都未到过;
2. 寻找次数控制变量I=1,每次寻找要到的洞的坐标变量K=0;
3. 当I<1000时,K=K+I确定每次寻找的坐标值,判断条件K>10否,大则K=K MOD 10(坐标值超过10则K=K-10);
4. 将A(K)赋值为0,表示该洞已到过;
没有先将A(10)赋值为0,是因为笔者先进行了几次手工寻找,知道第10洞会经过,所以不必先将10洞赋值为0。
5. I=I+1,如果I>1000,则执行第6步,否则返回第3步;
6. 输出所有值不为0的数组元素,程序结束。

参考程序
REM PROGRAM NAME:BRIGHTTUZHI.BAS
CLS
CONST N = 10