Может кто сталкивался [перебрать все варианты выражения]????

 

Существует следующая задача:

  необходимо перебрать все варианты выражения, вот сижу и ломаю голову как это сделать??? может есть мысли

переставлять можно местами члены выражения, как такое программно реализовать??? 

(int)(MathAbs(m_B5-m_B4-m_B3)-MathAbs(m_B3-m_B2-m_B1)-MathAbs(m_B1-m_B0-m_B)) 

члены этого выражения переменные 

 

Не вполне ясно задание. Что значит "все варианты выражения" ? В чем заключаются варианты ? Просто варианты перестановки переменных ? Или еще и функции разные должны быть ?

 
Laryx:

Не вполне ясно задание. Что значит "все варианты выражения" ? В чем заключаются варианты ? Просто варианты перестановки переменных ? Или еще и функции разные должны быть ?

Просто варианты перестановки членов выражения
 
sandex:
А что это даст. От перемены мест слагаемых сумма не меняется.
вопервых это неслагаемые, во вторых там знак модуля
 
dentraf:
Просто варианты перестановки членов выражения
еще 3-4 примера покажите
 
sergeev:
еще 3-4 примера покажите

исход            (int)(MathAbs(m_B5-m_B4-m_B3)-MathAbs(m_B3-m_B2-m_B1)-MathAbs(m_B1-m_B0-m_B))

варианты      (int)(MathAbs(m_B3-m_B4-m_B3)-MathAbs(m_B5-m_B2-m_B1)-MathAbs(m_B1-m_B0-m_B))

                    (int)(MathAbs(m_B5-m_B2-m_B3)-MathAbs(m_B3-m_B4-m_B1)-MathAbs(m_B1-m_B0-m_B)) 

                    (int)(MathAbs(m_B5-m_B4-m_B3)-MathAbs(m_B3-m_B2-m_B0)-MathAbs(m_B1-m_B1-m_B)) 

 
два раза B1, B3 - это так надо?
 
Количество комбинаций внутри функции MathAbs будет 8, а если надо перебирать не только внутри то получиться 512 комбинаций.
 
sergeev:
два раза B1, B3 - это так надо?
да
 
sandex:
Количество комбинаций внутри функции MathAbs будет 8, а если надо перебирать не только внутри то получиться 512 комбинаций.
Как реализовать программно?
 

1. проиндексируй переменные. (закрепи за каждой переменной свой номер)

2. У тебя 9 позиций - поэтому создай массив из 9 элементов P[9]

3. Каждый элемент массива - это индекс переменной.

4. Прогоняя в цикле все индексы P[9]  от [0 0 0 0 0 0 0 0 0]  до [9 9 9 9 9 9 9 9 9]  получай комбинации.  исключая комбинации с наличием двух одинаковых номеров!!!

5. имея полученную комбинацию - расставляй числа на свои места и вычисляй выражение.

Enjoy

Причина обращения: