【dp】序关系计数问题

问题描述:

 用关系“<”和“=”将3个数A、B和C依序排列时有13 种不同的序关系:A=B=C,A=B<C,  A<B=C,A<B<C,A<C<B,A=C<B,B<A=C,B<A<C,B<C<A,B=C<A,C<A=B,  C<A<B,C<B<A。将n个数(1≤n≤50)依序排列时有多少种序关系。

编程任务:

 编程计算出将n个数( 1≤n≤50)依序排列时有多少种序关系

数据输入:

 输入多行,每一行提供一个数n。

结果输出:

 对应输入,依次输出多行,每一行输出种序关系数。

样例:

 3

13

核心思想

 前i个数中有j个'<'号的方案数,j+1表示前i个数中被'<'分成j+1个集合,新插入的数所放位  置而构成方案数

var
 f:array[0..60]of qword;
 n,i,j:longint;
 ans:qword;
begin
 assign(input,'p32.in');reset(input);
 assign(output,'p32.out');rewrite(output);
 readln(n);
 f[0]:=1;
 fori:=2 to n do
 begin
  f[0]:=1;
  for j:=i-1 downto 1 do
   f[j]:=(j+1)*(f[j]+f[j-1]);
 end;
 fori:=0 to n-1 do
 inc(ans,f[i]);
 writeln(ans);
 close(input);close(output);
end.
题目来源:《算法设计与分析》第三章动态规划

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值