uva10306 e Coins 記憶化搜尋)

2021-06-23 01:21:14 字數 1018 閱讀 6459

題目:uva10306 - e-coins(記憶化搜尋)

題目大意:給出n個硬幣,每個硬幣有對應的x和y,ecoin的值= sqrt(x * x + y * y).問這些硬幣能否得到給定的ecoin。能的話輸出最小的組成數目。不能酒輸出not possible。

解題思路:這裡的x和y並不是指定是乙個硬幣的x或y,可以是多個硬幣來組成這個ecoin的值。例如 3 0 和 0 4 是可以組成ecoin5的。

所以這裡用dp【x】【y】表示達到x和y這個狀態時,最少要幾個coin。     

dp【x】【y】 = min (dp【x - v【i】.x】dp【y - v【i】.y] + 1)  【i >= 1 && i <= m】 , m 代表給定的硬幣的個數。

對於給定的ecoin,就要找出滿足 x * x + y * y = ecoin的所有的x。然後用記憶化搜尋一下答案,取最小值。這裡有找不到的情況,也有沒有找的情況。這兩個情況要區分開。  

**:

#include #include #include const int n = 45;

const int maxn = 305;

const int inf = 0x3fffffff;

int value[n][2];

int dp[maxn][maxn];

int n, s;

int min (const int a, const int b)

void init () */

}int dp (int x, int y)

if (ans == inf)

ans = inf + 1; //代表這些硬幣不論怎麼組成都不能得到這樣的x和y

return ans;

}int main ()

if (ans == inf)

printf ("not possible\n");

else

printf ("%d\n", ans);

} return 0;

}

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 10306 e Coins(二維完全揹包)

題目 有n種物品,每種物品有x,y兩個價值,並且可以有無限多個。給定s,使得 x1 x2 2 y1 y2 2 s 2。並且物品個數最少。思路 既然是物品個數沒有限制,則就要想到完全揹包。但是此時如何揹包就要退而求解。dp i j 表示能選到x的總和為i,y的總和為j時,最少的物品選擇數。此時還有個隱...

uva 10118 免費糖果 深搜 記憶化搜尋

uva 10118 include include define n 45 define c 22 int max int a,int b int pile 4 n f n n n n n,top 4 int dfs int s,int hash c if s 5 籃子滿了,末狀態 return f...