zoukankan      html  css  js  c++  java
  • 几种走法

    【基本算法—递推递归】几种走法

     
    总时间限制:
    10000ms
    单个测试点时间限制:
    1000ms
    内存限制:
    65536kB
    描述

    从原点出发,一步只能向右走、向上走或向左走。恰好走N步且不经过已走的点共有多少种走法?

    输入
    一个数N。1<=N<=1000。
    输出
    一个整数,表示共有多少种走法。由于结果可能很大,你只需要输出这个答案mod 12345的值。
    样例输入
    2
    
    样例输出
    7
    
    来源
    网络
    源程序:#include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <iostream>

    using namespace std;

    int pu(int s){
    int a[1010];
    a[1]=3;
    a[2]=7;
    for(int i=3;i<=s;i++){
    a[i]=(2*a[i-1]+a[i-2])%12345;
    }
    return a[s];
    }

    int n;

    int main(){
    cin>>n;
    cout<<pu(n);
    return 0;
    }
    分析:

    有三种走法,所以f(n)=f(n)shang+f(n)zuo+f(n)you

    向上走,即f(n)shang=f(n-1)

    向左走,即f(n)zuo=f(n-1)zuo+f(n-1)shang

    向右走,即f(n)you=f(n-1)you+f(n-1)shang

    f(n)=2f(n-1)+f(n-2)

  • 相关阅读:
    js练习 导航栏下拉子菜单
    js练习 DIV做下拉列表
    js添加事件
    HTML5音频和视频
    HTML5表单元素拓展
    document对象
    DOM
    函数
    常用的函数及递归
    JavaScript数组示例
  • 原文地址:https://www.cnblogs.com/shenlaizhibi/p/5904328.html
Copyright © 2011-2022 走看看