zoukankan      html  css  js  c++  java
  • 模拟题4

    题目描述

    问题描述

    有一长度为N(1<=N<=10)的地板,给定三种不同瓷砖:一种长度为1,一种长度为2,另一种长度为3,数目不限。要将这个长度为N的地板铺满,并且要求长度为1的瓷砖不能相邻,一共有多少种不同的铺法?在所有的铺设方法中,一共用了长度为1的瓷砖多少块?

    例如,长度为4的地面一共有如下4种铺法,并且,一共用了长度为1的瓷砖4块:

    4=1+2+1

    4=1+3

    4=2+2

    4=3+1

    编程求解上述问题。 

    输入格式

    只有一个数N,代表地板的长度

    输出格式

    第一行有一个数,代表所有不同的瓷砖铺放方法的总数。 
    第二行也有一个数,代表这些铺法中长度为1的瓷砖的总数 
     

    样例输入

    4 

    样例输出

    4

     

    不解释了,很简单,只是我比较弱而已……

    View Code
     1 program sky;
    2 var
    3 n,ans1,ans2:longint;
    4 procedure dfs(i,j,k:longint);
    5 begin
    6 if i=n then
    7 begin
    8 inc(ans1);
    9 inc(ans2,j);
    10 exit;
    11 end;
    12 if k<>1 then dfs(i+1,j+1,1);
    13 if i<n-1 then dfs(i+2,j,0);
    14 if i<n-2 then dfs(i+3,j,0);
    15 end;
    16 begin
    17 read(n);
    18 dfs(0,0,0);
    19 writeln(ans1); writeln(ans2);
    20 end.



  • 相关阅读:
    ZOJ 1217 eight
    COJ 1080 A simple maze
    八数码(双向广搜)
    HDOJ 1043 eight
    [HDOJ] 小兔的棋盘
    ZOJ 2110 Tempter of the Bone
    POJ 2406 Power Strings
    [HDOJ] goagain的超级数列
    COJ 1216 异或最大值
    八数码(IDA*)
  • 原文地址:https://www.cnblogs.com/skysun/p/2435365.html
Copyright © 2011-2022 走看看