1016

来源:互联网 发布:我知谁掌管明天 背景 编辑:程序博客网 时间:2024/05/01 21:51

题意:求走n步不同的方案数,不能向后走,或者同样的方格走两次。

思路:经过思考不难发现,这是一个和数学相关的知识,先把有两个的情况给列出来,即dp[0]=3,dp[1]=7,不难发现dp[i] = 2*dp[i-1] + dp[i-2];

感想:acm越来越数学化了,这几道题都可以用数学上的递推公式解决。

#include<iostream>

using namespace std;
int main()
{
    int dp[20];
    dp[0] = 3;
    dp[1] = 7;
    int i;
    for(i = 2 ; i < 20 ; i++)
    dp[i] = 2*dp[i-1] + dp[i-2];
    int t;
    cin>>t;
    while(t--)
    {
      cin>>i;
      cout<<dp[i-1]<<endl;
    }
}
0 0