UVA 624 CD 0 1揹包問題

2021-06-13 07:28:56 字數 504 閱讀 5367

/*

name: uva 624 cd

author:zj

ac date: 26/03/13 15:15

description: 01backpack problem

*/#include #include #include #include #include using namespace std;

int maxvalue,tracknum;

int dp[30][10010];

int data[30];

void backpack()

}}void output(int i,int j)

}int main()

cout

printf("sum:%d\n",dp[tracknum][maxvalue]);

} }

UVA 624 CD 01揹包問題

解題思路 01揹包問題,路徑比較難,用乙個陣列記錄,陣列儲存的是前m 1的數的和,那個和必然也是最大的,輸出的時候進行判斷,如果是小於那個數的,就不符合條件。感覺01揹包題目,如果是有限個數量的話,就用二維陣列表示狀態,如果是無限的話,就用一維的表示,uva 10465就是無限個的 include ...

UVA 624 CD (01揹包 帶路徑)

題意 輸入兩個數 len,n 表示長度和個數,接下來輸入n個數,表示每乙個的長度,求這n個數能夠組成的不超過len的最大長度,並輸出這些數。分析 01揹包,dp陣列非0表示可以組成的數,dp陣列用來記錄路徑 include include include include include includ...

UVA 624 CD 01揹包加路徑記錄問題

其實按照題目來後 我們直接可以寫乙個裸的01揹包,但是就是路徑不知道怎麼記錄。我們知道動態規劃的本質就是用空間換時間的方法,所以他是乙個表。我們可以開乙個vis的二維陣列表,把算出來的值記錄進去。然後把vis陣列倒著遍歷一遍就可以了。為什麼要倒著,應為我們dp表中有很多算出來的中間值不一定是我們要求...