cc150 硬幣問題

2022-04-11 20:03:25 字數 1188 閱讀 4690

given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 cent), find how many ways to represent n cents.

思路:從最大面值的硬幣開始分析,然後依次看更小面值的硬幣。假設 n = 100, 所有 valid 排列組合中

num_quarters = 0 的是一類,

num_quarters = 1 的是一類,

num_quarters = 4 的是一類

num_quarters = 0 的子集中,num_dimes = 0的是一類,num_dimes = 1的是一類,。。。

按照這種思路,可以簡單的用下面的**實現:

public

int makechange(int

amount) ;

return makechange(amount, denoms, 0);

}public

int makechange(int amount, int denoms, int

index)

return

ways;

}

上面的**是正確的,但是不夠efficient,因為存在重複運算,比如一共有60 cents時,子集a和子集b是相同的,計算了兩次。為了避免這種情況,下面的**進行了優化

int makechange(int

n);

int map = new

int[n+1][denoms.length];

return makechange(n, denoms, 0, map);

}int makechange(int amount, int denoms, int index, int

map)

if(index >= denoms.length - 1)

return 1;

int denomamount =denoms[index];

int ways = 0;

for(int i = 0; i * denomamount <= amount; i++)

map[amount][index] =ways;

return

ways;

}

cc150 括號問題

一 題目 implement an algorithm to print all valid properly opened and closed combinations of n pairs of parentheses.二 思路及其 實現 關係 s n s n 1 中每乙個元素與1對括號配對組...

CC150 需整理彙總

漢諾塔問題 p141 用兩個stack設計乙個佇列 p142 結合上題,佇列實現max操作,要求盡量提高效率。程式設計之美 找出二叉樹中指定節點的下乙個節點 中序後繼 假定每個節點有父指標。p154 二叉樹某兩個節點的公共祖先。p155 判斷t2是否是t1的子樹。p159 列印二叉樹節點數值總和等於...

如何做cc150演算法題

高頻題 解題思路和答案 coding前問好問題 當我看cracking這書時,把注意力更多的放在了解題上,經常是一看到題目就提筆想解決辦法,然後coding。這種做法,不論是在實際的解題過程中,還是在面試中都是不可取的,這也是導致我被拒的主要原因,我覺得。就目前我面過的而言,面試官想看的往往不是你多...