POJ2385 Apple Catching——动态规划

这道题,就不解释什么了吧,很水的动态规划嘛!

状态转移方程:

if a[i]=j

f[i,j,k]=Max{f[i-1,3-j,k-1],f[i-1,j,k]}+1

if a[i]=3-j

f[i,j,k]=Max{f[i-1,3-j,k-1],f[i-1,j,k]}

其中,f[i,j,k]的含义是第i分钟,在第j棵树下,移动了k次所能接到的最多苹果数目

a[i]表示第i分钟时掉下苹果的树的编号

 

P.s 有兴趣的同学可以试试滚动数组,不过这题显然没必要嘛!

 

CODE

Program POJ2385;//By_Poetshy
Const
	maxn=1005;
Var
	i,j,k,m,n,ans			:Longint;
	f						:Array[0..maxn,-1..50,1..2]of Longint;
	a						:Array[0..maxn]of Longint;
	
Function Max(i,j:Longint):Longint;
begin
	if i>j then exit(i);exit(j);
end;
	
BEGIN
	readln(n,m);
	for i:=1 to n do readln(a[i]);
	for i:=1 to n do
		for j:=0 to m do
			for k:=1 to 2 do
				if a[i]=k then f[i,j,k]:=Max(f[i-1,j-1,3-k],f[i-1,j,k])+1 else
					f[i,j,k]:=Max(f[i-1,j-1,3-k],f[i-1,j,k]);
	writeln(Max(f[n,m,1],f[n,m,2]));
END.


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值