[問題] c++ 數字很大

看板Programming作者 (平凡就好)時間14年前 (2011/04/16 20:41), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
double force_method(item *&list , const int &number , const double &weight){ double maxvalue=0 ; //暴力法的最佳解 long long int maxnumeber; int *XB; long long int temp1 = ( long long int ) pow ( 2 , number ); for( long long int i = 1 ; i < temp1 ; i++){//1~n^2-1 int *x; x = new int [ number ]; long long int temp=i; double sofarweight=0 , sofarvalue=0 ;//紀錄目前重量 和價值 for ( int j=0 ; j < number ; j++ ){ //十進位轉成二進位 x[ j ] = temp % 2 ; temp = temp / 2 ; //計算重量 if( x [ j ] == 1 ){ sofarweight += list[ j ].weight; sofarvalue += list[ j ].value; } } if( sofarweight <= weight && sofarvalue > maxvalue ){ maxvalue = sofarvalue; maxnumeber = i; XB=x; } } return maxvalue; } 我的問題在於 當number大於25的時候 程式就無法回傳值 其餘的沒有問題(值得傳輸 演算法) 第一次遇到沒有經驗 請大大多多指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.20.115

04/16 21:04, , 1F
做大數 or 換語言
04/16 21:04, 1F

04/16 21:12, , 2F
請問一下 做大數是什麼意思 我測試過
04/16 21:12, 2F

04/16 21:13, , 3F
long long int是32bit 足夠用
04/16 21:13, 3F

04/16 21:33, , 4F
long long是64-bit才對吧....
04/16 21:33, 4F

04/16 21:33, , 5F
大數是指自己寫程式模擬直式做加減乘除
04/16 21:33, 5F

04/16 23:34, , 6F
要做2的次方可以用左移去做
04/16 23:34, 6F
文章代碼(AID): #1DgOvjZi (Programming)
文章代碼(AID): #1DgOvjZi (Programming)