2012年分区联赛普级组第三题 摆花

本文详细解析了2012年分区联赛晋级组第三题——摆花问题。通过动态规划方法,利用三层循环实现,最终求解出在特定条件下摆放花朵的方案数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2012年分区联赛普级组第三题 <wbr>摆花


解题思路: 本题需用动态规划,三层循环,分别是 1 n 0 m 0 j a[i] 较小的那个数,然后计算下面这个式子: f[i,j]:=f[i,j]+f[i-1,j-k] 。最后输出 f[n,m] 即可。


程序:
var
  f:array[0..100,0..100] of longint;
  a:array[1..100] of longint;
  n,m,i,j,k:longint;

function min(x,y:longint):longint;
  begin
    if x
    exit(y);
end;

begin
  readln(n,m);
  for i:=1 to n do
    read(a[i]);
  fillchar(f,sizeof(f),0);
  f[0,0]:=1;
  for i:=1 to n do
    for j:=0 to m do
      for k:=0 to min(j,a[i]) do
        f[i,j]:=(f[i,j] mod 1000007+f[i-1,j-k] mod 1000007) mod 1000007;
  writeln(f[n,m]);
end.

版权属于: Chris
转载时必须以链接形式注明原始出处及本声明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值