生成系列 - K Fibonnaci(Java)

时间:2017-11-30 06:55:06

标签: java fibonacci series

这里新的。 我正在努力解决这个问题here。 我正在使用java,我不知道为什么它在大多数测试用例中都失败了。这是我的解决方案

public class Main{

    public static void main(String[] args) {
        int k,n;
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        k = sc.nextInt();
        long ans;
        long term[]=new long[n];
        for(int i=0;i<n;i++)
        {
         if(i<k)
             term[i]=1;
         else if(i==k)
             term[i]=k;
         else
         {
             term[i]=0;
            for(int j=i-k;j<i;j++)
                term[i]+=term[j];
         }
        } 
        ans=term[n-1]%1000000007;
        System.out.println(ans);
    }
}

我通过4个测试用例,但在其他测试用例中失败。我似乎无法弄清楚为什么。 已经接受了类似的解决方案this

任何帮助将不胜感激。谢谢:))

1 个答案:

答案 0 :(得分:0)

import java.util。*; 公共课主要{

public static void main(String[] args) {
    int k,n;
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    k = sc.nextInt();
    long ans;
    long term[]=new long[n];
    for(int i=0;i<n;i++)
    {
     if(i<k)
         term[i]=1;
     else if(i==k)
         term[i]=k;
     else
     {
         term[i]=0;
        for(int j=i-k;j<i;j++){
            term[i]+=term[j];
            term[i]%=1000000007;    
            }
     }
    } 
    ans=term[n-1]%1000000007;
    System.out.println(ans);
}

}

它工作并通过了所有测试用例(这个解决方案也由njzk2说)