动态规划-最小硬币
- 数值最少由多少个硬币组成
public static int minCoins(int[] arr, int aim) {
if (arr == null || arr.length == 0 || aim < 0) {
return -1;
}
int n = arr.length;
int max = Integer.MAX_VALUE;
int[][] dp = new int[n][aim + 1];
for (int j = 1; j <= aim; j++) {
dp[0][j] = max;
if (j - arr[0] >= 0 && dp[0][j - arr[0]] != max) {
dp[0][j] = dp[0][j - arr[0]] + 1;
}
}
int left = 0;
for (int i = 1; i < n; i++) {
for (int j = 1; j <= aim; j++) {
left = max;
if (j - arr[i] >= 0 && dp[i][j - arr[i]] != max) {
left = dp[i][j - arr[i]] + 1;
}
dp[i][j] = Math.min(left, dp[i - 1][j]);
}
}
return dp[n - 1][aim] != max ? dp[n - 1][aim] : -1;
}
字符串
- lloo 去掉 o 成 llo
- AABBCC 去掉 B 成 AABCC
字符串
最少奖品
- 编程比赛成员围成一个圈,分数高的人要比两边分数低的人获得的奖品更多
左程云编程的分糖果问题
一分二-绳子问题
- N条绳子,要求裁剪出M条长度想等的子绳子出来,秋裁剪的绳子长度最长k是多少
设最长长度为x,得数学公式为:
L1/X + L2/X + L3/X + L4/X + ..... + LN/X <= K
酷狗笔试
- 将一个数组拆分成两个和相等的数组,并且两个数组都排序。
网友评论