一、状态压缩dp(1)多米诺骨牌

来源:互联网 发布:淘宝推广软件有用吗 编辑:程序博客网 时间:2024/06/13 00:07
1、 多米诺骨牌(dominoes
【问题描述】
有多少种方法可以在一个
3*n的矩形中平铺一个2*1 的多米诺骨牌?

下图给出了一个3*12的矩形中一个平铺的样例。


【输入格式】
输入包含若干测试用例,以包含-1 的一行结束。每个测试用例包含一个整数0<=n<=30
【输出格式】
对每个测试用例,输出一个整数,给出可能的平铺数。
【输入样例】
28
12
-1
【输出样例】
3
153
2131


【输入格式】
输入包含若干测试用例,以包含-1 的一行结束。每个测试用例包含一个整数0<=n<=30
【输出格式】
对每个测试用例,输出一个整数,给出可能的平铺数。
【输入样例】
28
12
-1
【输出样例】
3
153

2131


代码:

var
  f:array [1..100] of qword;
  i,j,m,n,ans:longint;
begin
  assign(input,'dominoes.in');
  assign(output,'dominoes.out');
  reset(input);
  rewrite(output);


  readln(n);
  while n<>-1 do
  begin
    fillchar(f,sizeof(f),0);
    if n mod 2=1 then writeln('0') else
    begin
      f[1]:=1;
      f[2]:=3;
      f[3]:=11;
      for i:=4 to 20 do
      f[i]:=4*f[i-1]-f[i-2];
      writeln(f[(n+2) div 2]);
    end;
    readln(n);
  end;


  close(input);
  close(output);
end.



0 0
原创粉丝点击