#include<stdio.h>
#include<iostream>
using namespace std;
#define MAX 10006
long long int dp[MAX];
long long int a, b, c, d, e, f;
long long int fn(long long int n ) {
if(dp[n]!=-1) return dp[n];
else{
dp[n]= (fn(n-1) + fn(n-2) + fn(n-3) + fn(n-4) + fn(n-5) + fn(n-6))%10000007 ; //Recursive Calls
return dp[n];
}
}
int main() {
long long int n, caseno = 0, cases;
cin>>cases;
while(cases--){
for(int i=0;i<MAX;i++)
{
dp[i]=-1; //Dp table Initiailization
}
cin>>dp[0]>>dp[1]>>dp[2]>>dp[3]>>dp[4]>>dp[5]>>n;
cout<<"Case "<<++caseno<<": "<<fn(n)%10000007<<endl;
}
return 0;
}
示例输入:
1 9999 9999 9999 9999 9999 9999 9999
对于这个输入我没有得到任何输出。它会占用我所有的cpu资源......为什么?
答案 0 :(得分:0)
这就是事情:
执行第一个测试用例后,您在-1
数组中将所有值设置为dp
。尝试在调用递归函数fn
之前移动数组初始化循环。
当然,正如其他人指出的那样,如果您有一个输入案例,那么您的输入应该以{{1}}开头,而不是1
。
1 9999 9999 9999 9999 9999 9999 9999
9999
这肯定会产生输出,但我不确定它是否是预期的输出。