Excel vba макросы
Задание: нужно написать код с помощью макросов так,чтобы он мог расчитать разложение числа на слагаемые. То есть например для числа 5 будет 6 комбинаций и он должен выдать мне все эти 6 комбинаций. Пожалуйста помогите!
например для числа 5 будет 6 комбинаций
что вы называете комбинацией
напр 1+4 и 4+1 это одна комбинация или разные ?
повторы допускаются :1+1+1+2 ?
можно ли использовать 0: 0+5 ?
напиши все 6 комбинаций которые нужно получить макросом
как-то так.. адаптировано с http://acm.mipt.ru/twiki/bin/view/Curriculum/FIVTLecturesTerm1Lecture6
/*
n - осталось набрать слагаемых на сумму n
k - слагаемые не больше k
i - номер очередного слагаемого
В массиве a, начиная с i-го элемента, перебрать все возможные
варианты разложения числа n на слагаемые, не превосходящие k.
*/
function dec(n, k, i) {
if n < 0
exit function
if n = 0
// Просьба разложить 0 означает, что раскладывать уже нечего и
// и уже нет остаточного значения, котрое нужно разложить.
// Значит в массиве {a[0], a[1], ... a[i-1]} находится некоторое готовое разложение
// исходного числа n = m.
dim j as integer
for j = 0 to i-1
dec=dec & a[j]
next
dec=dec & vbCrLf
else
if n - k >= 0
a[i] = k; // фиксируем i-ое слагаемое
dec(n - k, k, i + 1);
end if
if ( k - 1 > 0)
dec(n, k - 1, i);
end if
end if
end function
sub main() {
dim a()
m=Input("Введите число");
redim a(m)
for i = 0 to i -1
a[i] = 0;
next
msgbox("Варианты суммирования для числа "+cstr(m)+": "+dec(m, m, 0))
end sub
Нужно обратиться к Биллу Гейтсу.
В РФ никто не пишет на VBA.