一道pascal题新手
小山田心子是一只聪明的小兔子。有一天她看见了一座彩虹桥,就走上去,彩虹桥的长度单位是n,她先在第一个单位上取走值,再从第2个长度单位开始,到第n个长度单位中寻找拥有最大的...
小山田心子是一只聪明的小兔子。有一天她看见了一座彩虹桥,就走上去,彩虹桥的长度单位是n, 她先在第一个单位上取走值,再从第2个长度单位开始,到第n个长度单位中寻找拥有最大的值的单位 i 跳过去,再从i+1个单位开始到n寻找。。。直到跳到n。求小山田心子跳过的值的和。要求时间只能是n个单位,也就是只能循环一遍。 输入n及n个单位的值
例如输入 5
1 2 5 4 3
输出 13 展开
例如输入 5
1 2 5 4 3
输出 13 展开
1个回答
推荐于2016-07-18
展开全部
思路:
1、第一个是起点,是必经之点,所以其值要加入累加器中;
2、以后只能向前跳,落点的规则是所有余下点中的最大者。对于算例:
第一次在1#点;第二次在后面4个点中选最大的3#点跳上去;第三次选余下两个点中的大者4#点跳上去;第四次选最后的5#点跳上去。故:1+5+4+3=13。
1、第一个是起点,是必经之点,所以其值要加入累加器中;
2、以后只能向前跳,落点的规则是所有余下点中的最大者。对于算例:
第一次在1#点;第二次在后面4个点中选最大的3#点跳上去;第三次选余下两个点中的大者4#点跳上去;第四次选最后的5#点跳上去。故:1+5+4+3=13。
追问
我是问程序,我当然明白题目什么意思,可以把程序发一下吗
追答
var
n,i,k,sum,maxid:integer;
a:array[1..1000] of integer;
f:text;
begin
assign(f,'兔子.in'); reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
close(f);
sum:=a[1];
k:=1;
repeat
maxid:=k+1;
for i:=k+2 to n do if a[i]>a[maxid] then maxid:=i;
sum:=sum+a[maxid];
k:=maxid;
until k=n;
writeln(sum);
end.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询