Оптимизация алгоритмов. - страница 10

 
Igor Makanu:

у Вас не сочетание, а перестановка без повторений

а мой пример это сочетание без повторений

а, то есть так и было задумано?:

0

1

01

11

001

101

011

...


Тогда для Вас код будет не намного сложнее, но однозначно столько циклов не нужны.

 
Andrey Dik:

а, то есть так и было задумано?:

да

мне нужно было генерировать в тестере имена файлов, каждый файл это параметры стратегии 

и путем генерации сочетаний без повторений комбинируются все комбинации ТС, на последней странице топика код который это делает


а Вашу проблему легко нагуглить "перестановки без повторений рекурсия С++"

 
Igor Makanu:

а Вашу проблему легко нагуглить "перестановки без повторений рекурсия С++"

гуглил, но попадаются в основном не универсальные решения.

а сделать и разобраться самостоятельно в любом случае гораздо интереснее и познавательнее.))

 
Andrey Dik:

можно код?

input int      StartN = 5;
input int      EndN   = 7;
input int      CountN = 4;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i1=0; i1<30; i1++)
     {
      Print(CombinationGenerator(i1,StartN,EndN,CountN));
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string CombinationGenerator(uint iteration_index,int startN, int endN, int countN)
  {
   string result;
   int base=endN-startN+1;
   uint ml=base;
   for(int i1=0; i1<countN; i1++)
     {
      uint md=iteration_index%base;
      result=result+string(md+startN);
      iteration_index=(iteration_index-md)/base;
     }
   return result;
  }

Всё просто:

2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5556
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6556
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7556
 
Aliaksandr Hryshyn:

Всё просто:

прикольно, спасибо! буду посмотреть.

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