作者seedpk5079 (fhcrc 99th ooxx)
看板C_and_CPP
標題[問題] 費氏數列+DP+大數
時間Thu Mar 12 22:49:03 2009
http://0rz.tw/NQaec
這是題目網址
看了裡面的討論後
小弟覺得這是費氏數列大數化的樣子
所以又免不了DP
我決定每一項都開一個50個int陣列給她
所以我設定了個自訂型態
但是當我做大數函數時(add)
卻發現無法編譯
以下是程式原碼
#include<stdio.h>
#include<string.h>
int b;
typedef struct big_number{
int ooxx[50];
big_number(){
int ooxx[50]={};
}
};
struct big_number dp[120],oxox[2];/*oxox[0] oxox[1]打算拿來當add的參數用*/
big_number add(big_number oxox[0],big_number oxox[1]){
int total[50]={},i,j,k,h,m;
for(i=0;oxox[0].ooxx[i]!='0';++i){}
for(j=0;oxox[1].ooxx[j]!='0';++i){}
k=((i>=j)?i:j);
for(m=k;m>0;--m){
int l=0;
total[l]=oxox[0].ooxx[m]+oxox[1].ooxx[m]+total[l];
if(total[l]>=10){
total[l+1]=total[l]%10;
total[l]=total[l]/10;
}
l++;
}
if(total[k+1]!=0){
k++;
}
for(h=0;;h++){
oxox[1].ooxx[h]=total[k];
k--;
}
return oxox[1];
}
big_number Fibonacc(int b){
if(b==1||b==2){
dp[1].ooxx[0]=1;
dp[0].ooxx[0]=1;
return dp[1];
}
else if(dp[b].ooxx[0]!=0){
return dp[b];
}
else{
return dp[b]=add(Fibonacc(b-1),Fibonacc(b-2));
}
}
int main(){
int n;
while(scanf("%d",&n)!=EOF ){
int day=0,i=0,number=0;
Fibonacc(n*5);
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.143.159.169
1F:推 yoco315:錯誤訊息是什麼 03/12 22:55
2F:推 HudsonE:可能是不能宣告 [0] 的陣列之類的... 03/12 22:59
3F:→ seedpk5079:我把錯誤訊息補上囉 在麻煩你們囉 03/12 23:15
4F:→ seedpk5079:In function`big_number add(big_number*,big_number*) 03/12 23:16
5F:→ seedpk5079:redeclaration of `big_number*oxox' 03/12 23:16
6F:→ seedpk5079:`big_number*oxox' previously declared here 03/12 23:17
7F:→ seedpk5079:In function `big_number Fibonacc(int)': 03/12 23:17
8F:→ seedpk5079:`big_number' to `big_number*' for argument `1' to ` 03/12 23:18
9F:→ seedpk5079:big_number add(big_number*, big_number*)' 03/12 23:18
10F:推 yoco315:你 add 參數寫錯了.. 03/13 19:42