vibhorrastogi.in
BAN USERpublic class MobileNumberPadProblem {
static final Map<Integer, List<String>> PAD = new HashMap<>();
static {
PAD.put(0, Arrays.asList("".split(" ")));
PAD.put(1, Arrays.asList("a b c".split(" ")));
PAD.put(2, Arrays.asList("d e f".split(" ")));
PAD.put(3, Arrays.asList("g h i".split(" ")));
PAD.put(4, Arrays.asList("j k l".split(" ")));
PAD.put(5, Arrays.asList("m n o".split(" ")));
PAD.put(6, Arrays.asList("p q r".split(" ")));
PAD.put(7, Arrays.asList("s t u".split(" ")));
PAD.put(8, Arrays.asList("v w x".split(" ")));
PAD.put(9, Arrays.asList("y z".split(" ")));
}
private static List<String> formWords(int[] arr, int i) {
if (i == arr.length - 1)
return new ArrayList<>(PAD.get(arr[i]));
List<String> l = formWords(arr, i + 1);
int size = l.size();
for (int j = 0; j < size; j++) {
String s = l.remove(0);
for (String x : PAD.get(arr[i])) {
l.add(x + s);
}
}
return l;
}
}
- vibhorrastogi.in January 30, 2017public class Budget {
int maxBudget, maxUtility;
int[] cost, utility;
String result;
public Budget(int maxBudget, int[] cost, int[] utility) {
this.maxBudget = maxBudget;
this.cost = cost;
this.utility = utility;
}
public static void main(String[] args) {
int[] cost = {50, 10, 20, 5, 9};
int[] utility = {50, 50, 50, 50, 50};
int maxBudget = 25;
Budget budget = new Budget(maxBudget, cost, utility);
budget.calc();
System.out.println("result: " + budget.result + " - maxUtility: " + budget.maxUtility);
}
private void calc() {
calc(0, 0, 0, "");
}
private void calc(int cCost, int cUtility, int i, String s) {
if (i >= cost.length)
return;
int tCost = cCost + cost[i];
int tUtility = cUtility + utility[i];
if (tCost <= maxBudget) {
String tS = s + "," + i;
calc(tCost, tUtility, i + 1, tS);
if (tUtility > maxUtility) {
maxUtility = tUtility;
result = tS;
}
}
calc(cCost, cUtility, i + 1, s);
}
}
- vibhorrastogi.in April 25, 2018