reborn_tou 2016-10-09 11:25 采纳率: 50%
浏览 1301
已采纳

C语言小蜜蜂问题,自己在编译器可行,但是提交超时,求问如何改?

图片说明#include
#include

int num(int count){

if(count>2)
    return (num(count-1)+num(count-2));
else
    return count;

}

int main() {

int N,a[50],b[50],count;
int i=0,j=0,roads;

scanf("%d",&N);
//INPUT
for(i=0;i<N;i++){
    scanf("%d%d",&a[i],&b[i]);
    if( 0<a[i] && a[i]<b[i] && b[i]<50)
        continue;
    else
        i--;
}
//OUTPUT
for(j=0;j<N;j++){
    count=b[j]-a[j];
    roads=num(count);
    printf("%d\n",roads);
}
return 0;

}

  • 写回答

2条回答 默认 最新

  • 祈祷爱绝缘 2016-10-10 08:44
    关注

    如苏小喵的给的那个网址。

    如果a-b的绝对值相同的话,线路数是相同的,类似是一种情况

    如果绝对值是1路线数是1 如果是2 路线数是2 如果是3 路线数是3.....

    有两个位置可以走到最后一个位置,那么走到最后一个位置的路线数就是走到这两个位置的路线数的和,

    递推过程出来了,递推公式很容易写出:

    F(i) = F(i-1) + F(i-2)

    这不就是一个斐波那契数列么?

    先提前做好一个斐波那契数列的数组F,然后直接输出F[b-a]就OK了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?