import java.util.Scanner; public class Backtracking { public Backtracking() { Scanner input=new Scanner(System.in); int[] values=new int[10]; int count=0; int choice=0; while (true) { choice=input.nextInt(); if (choice==0 || count>=10) break; values[count++]=choice; } while (true) { System.out.println("What's the target value?"); int target=input.nextInt(); if (target==0) break; System.out.println(solve(target,values,count, 0)?"yay":"no"); } } private String padding(int num) { String s=""; for (int i=0;i=count) return false; if (values[position]==target) return true; if (values[position]>target) return solve(target,values,count,position+1); //I've found something *smaller* than what I need if (solve(target-values[position],values,count,position+1)) return true; return solve(target,values,count,position+1); } public static void main(String[] args) {new Backtracking();} }