1樓:二月廬
這個是 《演算法導論》上面的題目。
使用二分查詢,對每乙個a,查詢(m-a)。
求助一道c++揹包問題 需要用遞迴的方法解決
2樓:磚頭
1.排序,刪掉大於s的物品。
2.編碼,放入為1,不放入為0。乙個編碼100111…就是一種物品的選擇。
3.從00000開始到11111,遍歷一遍就ok了。
想用遞迴的話。
1.排序,從小到大。
2.從0000開始,如果總質量小於s,2進位序列加1,作為變數傳送到下一層遞迴函式中。
3.如果大於s,返回0
4.如果等於s,返回1以及當前的2進位序列。
最簡單的揹包問題!用c++!
3樓:傲世修羅王
求所有解可以用回溯法,求最優解一般用動態規劃或者貪心策略。
因為題目要求所有解,故採用回溯。
先建模:此題目等價於自然數拆分,給定乙個自然數n,將n拆分成n1 + n2 + nn,使得n1 + n2 + nn = n,且n1, n2, .
nn中無重複數,求所有可能的拆分情況。這裡n相當於t,n1, n2,..nn相當於w1,w2,。。
wn。建模完畢!
上**:#include
using namespace std ;
儲存可行解。
int a[100] ;
輸出乙個可行解。
void output(int *a, int n)// 驗證當前解是否可行。
bool isok(int* a, int curindex, int curvalue)
對自然數n進行拆分,t用來控制拆分個數void partition(int n, int t, int *b) }
int main(void)
/ 揹包容量為10,從b中選若干件物品,使這些物品總量為10partition(10, 0, b) ;
system("pause") ;
return 0 ;}
4樓:網友
這些問題自己想想或者查一下資料再做不是比問人更好嗎?
c++程式設計:用遞迴函式求n!,其中n從鍵盤輸入。
5樓:敬憐晴蕢佩
乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。這種函式稱為遞迴函式。c語言允許函式的遞迴呼叫。
在遞迴呼叫中,主調函式又是被調函式。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。
例如有函式f如下:
intf(int
x)這個函式是乙個遞迴函式。但是執行該函式將無休止地呼叫其自身,這當然是不正確的。為了防止遞迴呼叫無終止地進行,必須在函式內有終止遞迴呼叫的手段。
常用的辦法是加條件判斷,滿足某種條件後就不再作遞迴呼叫,然後逐層返回。下面舉例說明遞迴呼叫的執行過程。
例】用遞迴法計算n!
用遞迴法計算n!可用下述公式表示:
n!=1n=0,1)
n×(n-1)!
n>1)
按公式可程式設計如下:
longff(int
n)main()
程式中給出的函式ff是乙個遞迴函式。主函式呼叫ff
後即進入函式ff執行,如果n<0,n==0或n=1時都將結束函式的執行,否則就遞迴呼叫ff函式自身。由於每次遞迴呼叫的實參為n-1,即把n-1的值賦予形參n,最後當n-1的值為1時再作遞迴呼叫,形參n的值也為1,將使遞迴終止。然後可逐層退回。
下面我們再舉例說明該過程。設執行本程式時輸入為5,即求5!。在主函式中的呼叫語句即為y=ff(5),進入ff函式後,由於n=5,不等於0或1,故應執行f=ff(n-1)*n,即f=ff(5-1)*5。
該語句對ff作遞迴呼叫即ff(4)。
進行四次遞迴呼叫後,ff函式形參取得的值變為1,故不再繼續遞迴呼叫而開始逐層返回主調函式。ff(1)的函式返回值為1,ff(2)的返回值為1*2=2,ff(3)的返回值為2*3=6,ff(4)的返回值為6*4=24,最後返回值ff(5)為24*5=120。
6樓:事事有成
void fact(int n)
應該是這樣吧,在用個main函式呼叫它就行了。
揹包問題的遞迴與非遞迴c++演算法實現
7樓:
如果你是想學寫程式,建議你手動,如果你是想抄**,建議你抄同學的。如果你需要乙份**,你出點錢我可以幫你寫。
8樓:網友
揹包問題不好遞迴,動態規劃做的。
c++程式設計:如何編寫乙個遞迴函式,輸出vector物件的內容
9樓:網友
遍歷vector,然後輸出?這個不能用遞迴做,會棧溢位的。
c語言函式遞迴呼叫的問題,C語言函式遞迴呼叫問題。
首先要知道fun 是一個定義的函式 fun a 相當於fun 3 由下面的函式定義得出fun 3 又fun 2 再求fun 0 因為0不滿足if裡的條件,所以不執行fun 1 所以是0120,希望樓主看明白 先呼叫fun 3 fun 3 中呼叫fun 2 fun 2 中呼叫fun 1 fun 1 中...
c語言問題用函式的遞迴求6的階乘求程式設計
這道題考察基本功,要對變數值的變化理解了 include stdio.h int ok int a main include int recursion int n int main c語言怎麼用遞迴呼叫函式的方法求n的階乘?1 開啟vc6.0軟體bai,新建 一個duc語言的專案 2 接zhi下來...
c程式設計 main函式帶命令列引數的使用
這是不可能的!請採納 main 函式及其引數 c 標準允許主函式main 有或沒有引數列表。您能在主函式main 中使用一個或更多的引數。如下是一些慣例 int main int argc,char argv 第一個引數argc,指明有多少個引數將被傳遞給主函式main 真正的引數以字串陣列 即第2...