PDA

Просмотр полной версии : задачка по математике



sunday2007
13.09.2007, 22:29
Более подходящего раздела не нашел.

Мне нужно решить вот такую задачку:
Сколько существует способов получить число 10 (в общем случае N) из суммы чисел от 1 до 10. Числа могут повторяться. Например:

1+1+2+2+4, 9+1, 6+1+1+2 и т.д
Если можно с формулой.

Задачка вроде школьная по комбинаторике, но я уже не помню как такое решается.
Спасибо.

Phoenixxe
15.09.2007, 11:07
public class Test
{
static int target = 8;
public static void main (String[] args){
System.out.println ("combinations = "+count(new int[0]));
}

static int count(int[] values) {
int aLength = java.lang.reflect.Array.getLength(values);
int sum = 0;
for (int i=0;i<aLength;i++) sum = sum + values[i];
int result = 0;
for (int i=1;i<=target-sum;i++) {
if (i+sum-target == 0) {
for (int j=0;j<aLength;j++) System.out.print (values[j]);
System.out.println (i+"+");
return result+1;
}
int[] aValues = new int[aLength+1];
for (int j=0;j<aLength;j++) aValues[j] = values[j];
aValues[aLength] = i;
result = result+count(aValues);
}
return result;
}
}