題目:
有n種物品,每種物品有x, y兩個價值,並且可以有無限多個。
給定s,使得(x1+x2+....)^2 + (y1+y2+....)^2 = s ^ 2。並且物品個數最少。
思路:既然是物品個數沒有限制,則就要想到完全揹包。但是此時如何揹包就要退而求解。
dp[i][j] 表示能選到x的總和為i,y的總和為j時,最少的物品選擇數。
此時還有個隱性的物品揹包屬性,那就是個數:把物品的價值當作是揹包容量,個數當作是價值。求能達到要求且價值最小的情況。
初始化狀態:dp[0][0] = 0。
#include #include#include
#include
#define min(a,b) (((a) < (b)) ? (a) : (b))
const
int maxn = 301
;int
dp[maxn][maxn];
int w1[50], w2[50
];int
main()
return0;
}
uva10306 e Coins 記憶化搜尋)
題目 uva10306 e coins 記憶化搜尋 題目大意 給出n個硬幣,每個硬幣有對應的x和y,ecoin的值 sqrt x x y y 問這些硬幣能否得到給定的ecoin。能的話輸出最小的組成數目。不能酒輸出not possible。解題思路 這裡的x和y並不是指定是乙個硬幣的x或y,可以是多...
UVA 10306 e Coins(二維完全揹包)
題意 e coin有兩個價值x,y,現在給你乙個價值n,給你幾種e coin,問你能否用最小的e coin數得到所求的價值n n x1 x2 xn 2 y1 y2 yn 2。思路 物品個數沒有限制,則就要想到完全揹包。但是此時如何揹包就要退而求解。dp i j 表示能選到x的總和為i,y的總和為j時...
uva 714 貪心 二分
include using namespace std const int maxm 500 int k,m,p maxm bool solve int ans else pre p i return kr k void print int ans else pre p i for int i 0 ...