[問題] DP+費氏+大數加法

看板C_and_CPP (C/C++)作者 (fhcrc 99th ooxx)時間16年前 (2009/04/22 15:21), 編輯推噓2(2018)
留言20則, 3人參與, 最新討論串1/1
#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

04/22 19:21, , 1F
ACM 495?
04/22 19:21, 1F

04/22 22:12, , 2F
恩恩 你能幫我解決程式問題嗎?
04/22 22:12, 2F

04/22 22:16, , 3F
陣列開大一點 不需要用到Linked-list 這樣比較好寫
04/22 22:16, 3F

04/22 23:20, , 4F
不是要DP嗎? 不然會TLE吧...
04/22 23:20, 4F

04/22 23:20, , 5F
這樣的話開大陣列好像也沒用...
04/22 23:20, 5F

04/22 23:21, , 6F
我目前是卡在儲存大數並DP的部分
04/22 23:21, 6F

04/22 23:59, , 7F
f(n)=f(n-1)+f(n-2) f(X)用一個陣列代表阿
04/22 23:59, 7F

04/23 06:20, , 8F
現在就是用1個陣列代表一個數的時候有問題...
04/23 06:20, 8F

04/23 10:45, , 9F
有什麼問題? @@
04/23 10:45, 9F

04/23 12:22, , 10F
之前構想是這樣的 先自訂一個型別內含有一個INT陣列
04/23 12:22, 10F

04/23 12:24, , 11F
用此結構開一個DP陣列 大數運算完後再存入DP陣列
04/23 12:24, 11F

04/23 12:24, , 12F
但是儲存部份就出現問題了 他就跟這個程式一樣
04/23 12:24, 12F

04/23 12:25, , 13F
不讓我遞迴... 說我傳進去的直沒有資料
04/23 12:25, 13F

04/23 15:34, , 14F
你的描述還滿抽象的....
04/23 15:34, 14F

04/23 15:35, , 15F
這麼問吧, 說你傳進去的值沒資料的是誰? compiler ?
04/23 15:35, 15F
※ 編輯: seedpk5079 來自: 220.143.153.122 (04/23 21:07)

04/23 21:07, , 16F
我標起來囉
04/23 21:07, 16F

04/24 11:45, , 17F
那你能看懂錯誤訊息想要說什麼嗎?
04/24 11:45, 17F

04/24 11:45, , 18F
為什麼你想要加 & 呢?
04/24 11:45, 18F

04/24 12:25, , 19F
我要把指標指向的陣列傳進add裡啊
04/24 12:25, 19F

04/24 14:13, , 20F
回傳已經是 int* 啦~
04/24 14:13, 20F
文章代碼(AID): #19xiLhie (C_and_CPP)
文章代碼(AID): #19xiLhie (C_and_CPP)