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