#913: 他就怎樣都不跑!!><


te00 (te00)

學校 : 臺中市立忠明高級中學
編號 : 3518
來源 : [163.22.18.79]
最後登入時間 :
2010-03-10 00:18:08
b120. 函數計算 (Comp) -- 95學年度台北市資訊學科能力競賽 | From: [140.128.59.164] | 發表日期 : 2008-11-11 08:43

小弟已經搞了好久   第一個範例資料跟第二個都沒問題  到第三個-21的時候   他就怎樣都不跑!!><

求助高手!!謝謝

 

#include<stdio.h>
#include<stdlib.h>
int h(int);
int g(int);
int f(int);


int main(void)

{   long long int n, k;
    while(scanf("%lld",&n)!=EOF)
    {
   

    printf("%lld",f(n));
    }
    return 0;
   
}
int f(int x)
{   if     (x>h(x)) return f(x-1)-h(x);
    else if(x<h(x)) return f(g(x))-g(x);
    else            return 1;
}
int h(int y)
{   if(y<2)         return (-1);
    else            return (2+h(y-1)-h(y-2));
}
int g(int z)
{   if(z<=2)        return (z*z-1);
    else            return 2;
}

 
#1124: Re:他就怎樣都不跑!!><


deepdish (Bryan Lee)

學校 : 不指定學校
編號 : 4944
來源 : [220.135.88.95]
最後登入時間 :
2014-03-16 00:15:28
b120. 函數計算 (Comp) -- 95學年度台北市資訊學科能力競賽 | From: [220.132.173.237] | 發表日期 : 2009-01-01 13:03

可能是遞迴的stack overflow了
所以建議你先把其中一個遞迴改成迴圈試看看

 
#3988: Re:他就怎樣都不跑!!><


pcsh710720 (∫tanxdx=-㏑|cosx|+C)

學校 : 新北市立板橋高級中學
編號 : 2491
來源 : [140.120.19.1]
最後登入時間 :
2015-09-30 13:22:17
b120. 函數計算 (Comp) -- 95學年度台北市資訊學科能力競賽 | From: [119.77.163.67] | 發表日期 : 2010-07-14 00:17

小弟已經搞了好久   第一個範例資料跟第二個都沒問題  到第三個-21的時候   他就怎樣都不跑!!><

求助高手!!謝謝

 

#include
#include
int h(int);
int g(int);
int f(int);


int main(void)

{   long long int n, k;
    while(scanf("%lld",&n)!=EOF)
    {
   

    printf("%lld",f(n));
    }
    return 0;
   
}
int f(int x)
{   if     (x>h(x)) return f(x-1)-h(x);
    else if(x
    else            return 1;
}
int h(int y)
{   if(y<2)         return (-1);
    else            return (2+h(y-1)-h(y-2));
}
int g(int z)
{   if(z<=2)        return (z*z-1);
    else            return 2;
}

建議以dp建表

題目雖說-300<x<300

但運算下來會-300<x<90000 

所以陣列要建9萬多(宣告於全域 以免堆疊溢滿)

輸入前  先用for將f(x)以-10 -20 -30 ... -290代入建表

以免跑h(x)時overflow

隨後即可AC

 
ZeroJudge Forum