在线判断系统 - 为什么我得到错误的答案?

时间:2013-01-28 08:34:56

标签: c algorithm dynamic-programming

原始页面:http://acm.whu.edu.cn/learn/problem/detail?problem_id=1036

这应该是一个简单的动态编程问题。我想出了解决方案如下:

int main(void)
{
    double d[501];
    int i;
    d[0] = d[1] = 1.;
    d[2] = 2.;
    for(i = 3; i<=500; i++)
        d[i] = d[i-1] + d[i-2] + d[i-3];


    int n;
    while(scanf("%d", &n) == 1) {
        if(n == 0) return 0;
        printf("%.0lf\n", d[n]);
    }

    return 0;
}

但错误答案在提交后报告。我真的不知道为什么。

2 个答案:

答案 0 :(得分:2)

double对于精度

是不够的

你应该使用高精度来解决它

答案 1 :(得分:1)

可能是小数点。 printf("%.0lf\n", 1.0);将打印1.0,但系统可能会等待1