作者seedpk5079 (fhcrc 99th ooxx)
看板C_and_CPP
标题[问题] DP+费氏+大数加法
时间Wed Apr 22 15:21:14 2009
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct big_number{
int number[50];
struct big_number *link,*front;
big_number(){
int number[50]={};
}
};
big_number* crate(void){
big_number *k;
k = (big_number *)malloc(sizeof(big_number));
k->link=NULL;
k->front=NULL;
return k;
}
void son(big_number *next,char *r){
big_number *q=crate();
next->link=q;
q->front=next;
}
int b;
struct big_number *w,*e;
struct big_number *dp=crate();
struct big_number *xx=dp,*yy;
void first(void){/*进行费氏最初2项初始化*/
xx=xx->link;
xx->front=dp;
int one=1,*hhh;
xx->number[0]=1;
yy=xx;
xx=xx->link;
xx->number[0]=1;
xx->front=yy;
}
int* add(int *w,int *e){
int total[50]={},i,j,k,h,m;
for(i=0;w[i]!='0';++i){}
for(j=0;e[j]!='0';++i){}
k=((i>=j)?i:j);
for(m=k;m>0;--m){
int l=0;
total[l]=w[i]+e[j]+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++){
e[h]=total[k];
k--;
}
return e;
}
int* Fibonacc(int b){
struct big_number *zz=zz;
zz=zz->link;
int qq;
for(qq=0;qq<b;++qq){
zz=zz->link;
}
if(b==1||b==2){
return zz->number;
}
else if(zz->number[0]!=0){
return zz->number;
}
else{
int z;
int *replace;
replace=add(&Fibonacc(b-1),&Fibonacc(b-2));
for(z=0;z<50;++z){
zz->number[z]=replace[z];
printf("%d",zz->number[b]);
}
return zz->number;
}
}
int main(){
int n;
while(scanf("%d",&n)!=EOF ){
int day=0,number=0,u,*m;
first();
printf("%d\n",xx->number[0]);
//m=Fibonacc(3);
for(u=0;u<50;++u){
printf("%d\n",m[u]);
}
}
return 0;
}
他一直说我的传的值是无效的...
请会的大大帮忙看吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.60.161.254
1F:→ netsphere: ACM 495? 04/22 19:21
2F:→ seedpk5079:恩恩 你能帮我解决程式问题吗? 04/22 22:12
3F:→ netsphere:阵列开大一点 不需要用到Linked-list 这样比较好写 04/22 22:16
4F:→ seedpk5079:不是要DP吗? 不然会TLE吧... 04/22 23:20
5F:→ seedpk5079:这样的话开大阵列好像也没用... 04/22 23:20
6F:→ seedpk5079:我目前是卡在储存大数并DP的部分 04/22 23:21
7F:→ netsphere:f(n)=f(n-1)+f(n-2) f(X)用一个阵列代表阿 04/22 23:59
8F:→ seedpk5079:现在就是用1个阵列代表一个数的时候有问题... 04/23 06:20
9F:→ ledia:有什麽问题? @@ 04/23 10:45
10F:→ seedpk5079:之前构想是这样的 先自订一个型别内含有一个INT阵列 04/23 12:22
11F:→ seedpk5079:用此结构开一个DP阵列 大数运算完後再存入DP阵列 04/23 12:24
12F:→ seedpk5079:但是储存部份就出现问题了 他就跟这个程式一样 04/23 12:24
13F:→ seedpk5079:不让我递回... 说我传进去的直没有资料 04/23 12:25
14F:→ ledia:你的描述还满抽象的.... 04/23 15:34
15F:→ ledia:这麽问吧, 说你传进去的值没资料的是谁? compiler ? 04/23 15:35
※ 编辑: seedpk5079 来自: 220.143.153.122 (04/23 21:07)
16F:→ seedpk5079:我标起来罗 04/23 21:07
17F:推 ledia:那你能看懂错误讯息想要说什麽吗? 04/24 11:45
18F:→ ledia:为什麽你想要加 & 呢? 04/24 11:45
19F:→ seedpk5079:我要把指标指向的阵列传进add里啊 04/24 12:25
20F:推 ledia:回传已经是 int* 啦~ 04/24 14:13