Hi,
Here is the solution, which gives some feasible results:
*******************************************************************************
package google;
import java.util.HashSet;
import java.util.Set;
public class Cards24 {
// { 1,2,3,4,5,6,7,8,9,10,11,12,13 }
// 1 to 13 = { A,2,3,4,5,6,7,8,9,10,J ,Q ,K }
private int [] cards = {2,4,8,12,1};
private final double RESULT = 24; //should be double for
devision
private Set <String> setCombination = new HashSet <String>();
private void permMult (int v[], int size, int i, String result,
double iRes) {
if (i == size)
if(iRes == RESULT)
{
if(setCombination.contains(result) == false)
{
setCombination.add(result);
System.out.println("RESULT : =" + result);
}
}
// printArray(v);
for (int j = i ; j<size; j++) {
swap (v, i, j);
// printArray(v);
if (i == 0)
{
permMult (v, size, i+1, "" + v[i], v[i]);
permMult (v, size, i+1, "-" + v[i], -
v[i]);
// printArray(v);
// System.out.println( v[i] );
}
else
{
permMult (v, size, i+1, "(" + result + ") + " +
v[i], iRes + v[i]);
permMult (v, size, i+1, "(" + result + ") - " +
v[i], iRes - v[i]);
permMult (v, size, i+1, "(" + result + ") / " +
v[i], iRes / v[i]);
permMult (v, size, i+1, "(" + result + ") * "
+ v[i], iRes * v[i]);
}
swap (v, i, j);
}
}
private void printArray(int [] v)
{
for(int i = 0; i < v.length; i++)
{
System.out.print(v[i] +" ");
}
System.out.print("\n");
}
void swap (int v[], int i, int j) {
int t;
t = v[i];
v[i] = v[j];
v[j] = t;
}
public Cards24()
{
permMult(cards, cards.length, 0,"", 0);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Cards24();
}
}
*******************************************************************************
> >> Seabook- Hide quoted text -
>
> - Show quoted text -