/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 最少货币数
* @param arr int整型一维数组 the array
* @param arrLen int arr数组长度
* @param aim int整型 the target
* @return int整型
*/
#include <math.h>
#define min(x,y) (x>y?y:x)
int minMoney(int* arr, int arrLen, int aim ) {
// write code here
//这个题目当时是做过的,我有点忘记它的这个条件了核心就是把那个
//能找到就可以
/*有思路了
dp[i] = mount,
这个下标就是aim,mount就是所需要的数量
所以先搞一个数组
*/
int *dp = malloc(sizeof(int)*(aim+1));
dp[0] = 0;//初始值
for(int i = 1;i<= aim;i++)
{
dp[i] = 999999;//先初始化为无穷大
for(int j = 0;j<arrLen;j++)
{
if(i >= arr[j] &&dp[i-arr[j]] !=INFINITY)
{
dp[i] = min(dp[i],dp[i-arr[j]]+1);
}
}
}
return dp[aim]==999999?-1:dp[aim];
}
这个题目,当时实习面试时就考了这个,当时没有做出来,还是自己基础太过于薄弱了。

京公网安备 11010502036488号