算法:DP
应该说还是比较好推的,因为要保证连续两个人不被扔,因此设f[i]表示前i个人不被扔的情况,那么f[i]=f[i-1]+f[i-2]{不扔第i个人,即i-1,扔第i个人,即i-2。}注意需要用到qword。
program P1421;
const
maxn=91;
var
n:longint;
f:array [0..maxn] of qword;
procedure main;
var
i:longint;
begin
f[0]:=1;
f[1]:=2;
for i:=2 to n do f[i]:=f[i-1]+f[i-2];
end;
begin
assign(input,'P1421.in'); reset(input);
assign(output,'P1421.out'); rewrite(output);
readln(n);
main;
writeln(f[n]);
close(input); close(output);
end.
本文详细介绍了动态规划算法在解决扔硬币问题中的应用,通过设定状态转移方程f[i]=f[i-1]+f[i-2],实现对前i个人不被扔情况的求解。程序通过迭代计算,最终输出第n个人是否会被扔的结果。
1697

被折叠的 条评论
为什么被折叠?



