RealTek筆試經(jīng)驗(yàn)
寫(xiě)一個(gè)函數(shù)計(jì)算當(dāng)參數(shù)為n(n很大)時(shí)的值 1-2+3-4+5-6+7……+n ;
long fn(long n) {
if(n<=0)
{
printf(“error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n; } //******************************************************** 要求我用一種技巧性的編程方法來(lái)用一個(gè)函數(shù)實(shí)現(xiàn)兩個(gè)函數(shù)的功能n為如: fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6! fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
現(xiàn)在用一個(gè)函數(shù)fn(int n,int flag)實(shí)現(xiàn),當(dāng)flag為0時(shí),實(shí)現(xiàn)fn1功能,如果flag為1時(shí)實(shí)現(xiàn)fn2功能!他的要求還是效率,效率,效率!說(shuō)實(shí)在話,如果我心情好的話我應(yīng)該能給出一種比較好的算法,但我那時(shí)真的沒(méi)有什么心思再想了,我在紙上胡亂畫(huà)了一些諸如6!=6*5!的公式后直截了當(dāng)?shù)?跟他說(shuō)要他給出他的答案!面試官也沒(méi)有說(shuō)什么,給出了他的思路:
定義一個(gè)二維數(shù)組 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后給出一個(gè)循環(huán):
for(i=0;i<6;i++) {
temp=temp+n/t[flag];
}
最后得到計(jì)算值!呵呵,典型的空間換時(shí)間的算法!
【RealTek筆試經(jīng)驗(yàn)】相關(guān)文章:
筆試經(jīng)驗(yàn):筆試內(nèi)容準(zhǔn)備09-02
故宮筆試經(jīng)驗(yàn)05-07
銀監(jiān)會(huì)筆試經(jīng)驗(yàn)12-18
招商筆試經(jīng)驗(yàn)12-18
微軟筆試經(jīng)驗(yàn)12-07
求職筆試經(jīng)驗(yàn)12-07
蘇寧筆試經(jīng)驗(yàn)筆試寫(xiě)作08-31
安永筆試經(jīng)驗(yàn)及筆試細(xì)節(jié)08-31
中興筆試面試經(jīng)驗(yàn)08-23