美文网首页
1060: 统计方案

1060: 统计方案

作者: 茶酒qqq | 来源:发表于2019-04-26 19:03 被阅读0次

    题目描述

    在一无限大的二维平面中,我们做如下假设:
    1、每次只能移动一格;
    2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
    3、走过的格子立即塌陷无法再走第二次。
    求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。

    输入

    首先给出一个正整数C,表示有C组测试数据。
    接下来的C行,每行包含一个整数n(n<=20),表示要走n步。

    输出

    请编程输出走n步的不同方案总数;
    每组的输出占一行。

    样例输入

    2
    1
    2
    

    样例输出

    3
    7
    

    思路

    令f(N)为走N步的不同方案数,同理f(N-1)为走N-1步的不同方案数。

    • N=1时,f(1)=3(上左右三种);
    • N=2时,f(1)表示有f(1)条不同走法的路径,每条路径可以走的步数:
      (1)如果从左边过来,就有右/上两种走法;
      (2)如果从右边过来,就有左/上两种走法;
      (3)如果从下面上来,,就有左/右/上三种走法;

    那我们要不要分两类讨论呢?一种是上一步走了左右的,另一种是从下面上来的。

    其实不用,因为这两种方法都是包含左/右和上的,因此可以令f(N)=2 * f(N-1)(上一步有两种走法),但是易知从N-2到N-1的走法必定包括向上走一步的走法,所以从N-1到N必定比2 * f(N-1)多一步(情况三是三种走法),即f(N)=2 * f(N-1)+1.

    所以递推公式是f(N)=2 * f(N-1)+1.
    终止条件是 f(1)=3;

    代码(AC)

    1060: 统计方案

    相关文章

      网友评论

          本文标题:1060: 统计方案

          本文链接:https://www.haomeiwen.com/subject/xpgqnqtx.html