作者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