int coinChange(vector<int>& coins, int amount) {
if(coins.empty()) return 0;
vector<int> dp(amount+1,amount+1);//表示dp长度为amount+1,每个元素初始化为amount+1
//此处初始值只是表示一个较大的数而已,也可以用amount+2等等
dp[0]=0;
for(int i=1;i<=amount;++i)
for(int j=0;j<coins.size();++j)
if(i>=coins[j])
dp[i]=min(dp[i],dp[i-coins[j]]+1);
return dp.back()==(amount+1)?-1:dp.back();
}