#include <climits> #include <cstdint> #include <sys/types.h> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 最少货币数 * @param arr int整型vector the array * @param aim int整型 the target * @return int整型 */ int minMoney(vector<int>& arr, int aim) { if(!arr.size())return -1; // write code here uint_fast16_t dp[aim + 1]; int i=0,j,t=1; fill(dp+1,dp+aim+1,5001); dp[0]=0; for(i=0;i<arr.size();++i){ for(j=1;j<=aim;++j){ //cout<<j<<' '<<arr[i]<<' '<<j-arr[i]<<endl; if(arr[i]<=j)dp[j]=min(dp[j],dp[j-arr[i]]+1); //cout<<dp[i][j]<<' '; } } return dp[aim]==5001?-1:dp[aim]; } };
很经典,随便存一下……