package codingInterviewGuide.part4dp;import java.util.Arrays;/*** Created by Dell on 2017年08月06日.*/public class LeastNum {public static int dpNum(int[] arr,int aim){int[] dp=new int[aim+1];for(int i=1;i<=aim;i++){//初始化第一种货币dp[i]=i%arr[0]==0?i/arr[0]:Integer.MAX_VALUE;}Arrays.stream(dp).forEach(i->System.out.print(" "+i));System.out.println();for(int i=1;i<arr.length;i++){//i表示每种货币for(int j=1;j<=aim;j++) {if(j%arr[i]==0){//能全部用该货币组成,在只用该货币和只用其他货币间权衡,也要在用一张该货币时抉择dp[j]=Math.min(dp[j],j/arr[i]);}//不能全部用该货币,在该货币用0张,1张,2张之间选择//用一张if(j-arr[i]>0){dp[j]=Math.min(dp[j],dp[j-arr[i]]==Integer.MAX_VALUE?Integer.MAX_VALUE:dp[j-arr[i]]+1);}//这里可能会下标越界-1,考虑情况}Arrays.stream(dp).forEach(z->System.out.print(" "+z));System.out.println();}// Arrays.stream(dp).forEach(i->System.out.print(" "+i));// System.out.println();return dp[aim];}public static int getNum(int[] arr,int aim){int min=0;return voilence(arr,0,aim);}public static int voilence(int[] arr,int index,int aim){if(aim==0) return 0;if(aim<0||index>=arr.length){return -1;}int count=Integer.MAX_VALUE,temp=0;for(int i=0;i<=aim/arr[index];i++){//该种货币从0至最多,每个使用一遍temp=voilence(arr,index+1,aim-arr[index]*i);if(temp!=-1){count=Math.min(count,i+temp);}}return count==Integer.MAX_VALUE?-1:count;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。