/*
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表中有很多算出來的中間值不一定是我們要求...