yueyufeng 发表于 2023-11-12 15:32:57

时间超限

isdkz 发表于 2023-11-12 15:33:04

这段代码中存在一个问题,即递归计算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]
查看完整版本: 时间超限