小编vks*_*ack的帖子

Fibonacci修改:如何修复此算法?

我面前有这个问题,我无法弄清楚如何解决它.它是关于系列的0,1,1,2,5,29,866...(除了前两个之外的每个数字都是前两个数字的平方和(2^2+5^2=29)).在第一部分我不得不写一个算法(不是母语,所以我真的不知道术语)将在系列中获得一个位置并返回它的值(6 returned 29)这是我写它的方式:

public static int mod(int n)
{
    if (n==1)
        return 0;
    if (n==2)
        return 1;
    else
        return (int)(Math.pow(mod(n-1), 2))+(int)(Math.pow(mod(n-2), 2));
}
Run Code Online (Sandbox Code Playgroud)

但是,现在我需要算法将收到一个数字,然后在系列中返回总数.(6- 29+5+2+1+1+0=38)我不知道怎么做,我正在尝试但是到目前为止我真的无法理解递归,即使我写了一些正确的东西,我怎么检查它确定?一般来说,如何达到正确的算法?

禁止使用任何额外参数.

提前致谢!

java algorithm recursion memoization dynamic-programming

6
推荐指数
1
解决办法
395
查看次数

计数使用长度为1,2,3,4,...... m的步长到达第N步的方法数(其中m <= n)

我给了n10 5的订单.我要找到一些方法,使用长度步长从地面到达 n 步1 or 2 or 3 or.....or m,这里m <= n.

由于答案可能太大,输出模数为10 9 +7.

#include<iostream.h>
using namespace std;

#define ll long long
#define MOD 1000000007

ll countWays_(ll n, ll m){
    ll res[n];
    res[0] = 1; res[1] = 1;
    for (ll i=2; i<n; i++)
    {
       res[i] = 0;
       for (ll j=1; j<=m && j<=i; j++)
         res[i] =(res[i]%MOD+ res[i-j]%MOD)%MOD;
    }
    return res[n-1];
}

ll countWays(ll s, ll m){
    return countWays_(s+1, m);
}
int …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm combinations permutation combinatorics

4
推荐指数
1
解决办法
570
查看次数