arr = {1, 2, 3} using coins only once target = 7 return number of coins needed
fun( int[] arr, int target, int index){
if(index == 0){
if( arr[0] == target ){
return 1;
}else return 0;
}
if(arr[index] >= target)
int take = 1 + fun(arr, target-arr[index], index-1);
int notTake = 0 + fun(arr, target, index-1);
return Math.min(take, nonTake);
}dp[arr.length][target+1]
funTab(){
for(int i=0;i<target;i++){
dp[0][i] = 0;
}
dp[0][target] = 1;
for(int i=1; i < arr.length ; i++){
for(int j=0; j <= target; j++){
if(arr[i] >= j)
int take = 1 + dp[i-1][j-1]; //target-arr[index], index-1];
int notTake = 0 + dp[i-1][j]; //[target][index-1];
dp[i][j] = min(take, notTake);
}
}
}