时间超限
这段代码中存在一个问题,即递归计算lml函数时出现了重复计算,导致时间复杂度过高。可以通过使用动态规划来优化这个问题。以下是修改后的代码:
#include <stdio.h>
#include <math.h>
int lml(int n)
{
int dp;
dp = 0;
dp = 1;
for (int i = 3; i <= n; i++)
{
dp[ i] = 4 * dp - 5 * dp;
}
return dp;
}
int main()
{
int N;
scanf("%d", &N);
while (N--)
{
int n;
scanf("%d", &n);
printf("%d\n", lml(n));
}
return 0;
}
这里使用了一个数组dp来保存中间结果,避免了重复计算,从而降低了时间复杂度。
页:
[1]