一个超级难的free pascal循环问题

题目是:某人上台阶,一步可以走一个台阶,也可以走两个台阶,还可以走三个台阶。问他走到10层台阶时共有多少种不同走法?

用F[I]表示上到第I级台阶时的方法数
因为F[I]只能由F[I-1],F[I-2],F[I-3]三种状态到达,所以递推式
F[I]=F[I-1]+F[I-2]+F[I-3]

Var F:Array[0..10]of Longint;
I:Longint;
Begin
F[0]:=1;
F[1]:=1;
F[2]:=2;
For I:=3 to 10 do
F[I]:=F[I-1]+F[I-2]+F[I-3];
Writeln(F[10]);
End;
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-04
本题递推
var f:array[-2..10] of longint;
i:longint;
begin
f[0]:=1;
for i:=1 to 10 do
f[i]:=f[i-1]+f[i-2]+f[i-3];
writeln(f[10]);
end.
从1层顺推到10层,每层满足方案数为i-1层、i-2层、i-3层方案数和。
f[0]:=1;为初始化
答案为274吧
第2个回答  2009-07-12
答案为斐波那契数列
第3个回答  2009-07-13
楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,还可以走三个台阶。编一程序计算共有多少种不同的走法.

设n阶台阶的走法数为f(n)

显然有

1 n=1

f(n)={ 2 n=2

3 n=3

f(n-1)+f(n-2)+f(n-3) n>3

可编程序如下:

program louti;

var n:integer;

function f(x:integer):integer;

begin
if x=1 then
f:=1
else
if x=2 then
f:=2
else
if x=3 then
f:=3
else
f:=f(x-1)+f(x-2)+f(x-3);
end;
begin

write('n=');read(n);

n:=10;
writeln('f(',n,')=',f(n))
end.

一个超级难的free pascal循环问题
I:Longint;Begin F[0]:=1;F[1]:=1;F[2]:=2;For I:=3 to 10 do F[I]:=F[I-1]+F[I-2]+F[I-3];Writeln(F[10]);End;

猫吃老鼠的程序问题,用free pascal的,感激不尽!
你这个问题是一个很经典的问题,叫做约瑟夫问题!而你这道题目的规模不知道可以去到多大,如果是比较小的话,可以直接采用模拟的方法,可是当数据量达到n=10^100的时候,就明显会TLE了。所以这道题目最好的方法就是LS的方法了,找到它的规律,至于怎么找到它的规律的,这里有一个范例,当然,找规律的...

free pascal问题,请解释。。。
第一个while是指t>1的情况下进入,即若输入n=0、1则直接输出。第二个while是指t mod a=0的时候进入,即分解质因数。若分解了这个因数后的数还有这个因数,则继续分解:例:4=2*2。最后t div a=1时就不用输出乘号了。inc为什么不放在上面?问题问得好。首先,inc如果放在上面,则会(一定几率...

free pascal 编译问题
1、大循环 for i:=1 to n do 后面加了个分号,以至于循环空做,主程序只做了一遍,把分号去掉 2、fillchar 放在循环外,改为放到循环内,每遍都要还原 3、将手铐已打开(true)的人变为未打开(false)时打错了,以及变化只有一次,所以要改分号为 else 4、统计时循环应为 for a:=1 to y...

关于Free Pascal 编程问题
for i:=1 to n do begin for j:=1 to (n+1)-i do write('*');writeln;end;{注意:j表示的是每行要画星星的次数,所以用 to 或 downto 没有关系} 同理后面的也是这么分析 3)应该是:可见,这次在前面的基础上要加上一个输出空格的语句,不难发现空格数与2)的星星数是相同的,...

世界第一难的free pascal题,井字游戏。高分
每个格子有3种状态玩家占有\\电脑占有\\空 做记忆化搜索一定可以的

free Pascal 循环语句相关问题!!急!
1.递增型FOR循环。FOR 循环控制变量(随便设一个字母就ok啦):=循环初值 TO 循环终值(如1 to 9 的话就是做9次的意思) DO 循环的语句(就是要做什么)例: FOR I:=5 TO 10 DO WRITELN (I);输出的结果为: 5 6 7 8 9 10 即循环一共执行了6次 如果要重复多个语句,一定要用BEGIN-...

free pascal问题
2)队列或循环链表!3)冒泡到处都是,搜搜吧!4)先计算每个数占多少位置,然后后计算每行开始输出多少空格。每行输出数字时,每输出一个数输出同样多位置的空格,间隔排列就是。5)“.”结束---逐字符输入(循环输入)读到 '?',结束(循环)输入。回文判断,两头往中间走,遇到字符不同退出,没...

free pascal的问题 (用while语句解答)
while n<=9 do begin tot:=(tot+1)*2;n:=n+1;end;writeln(tot);end.program ex_2;var i,j,k:integer;begin for i:=2 to 1000 do begin write(i,'=');k:=i; j:=2;{j 用来试探其因子,1000以内很小,枚举即可} while k<>1 do if k mod j=0 then begin if k div j...

Freepascal编程问题
program tri;var i,j,n:longint;begin readln(n);\/\/你要9就输9 for i:=1 to n do begin for j:=1 to i do write(' ');for j:=1 to i do write('*');writeln;end;end.羡慕你们,我们的程序...后天就是省选

相似回答