Надо написать функцию следующего вида: на вход подаётся массив arr
, число n
и функция foo
. Надо, чтобы над каждым из элементов массива arr
функция выполнялась arr.size() ^ n
раз, т.е. нужно n
вложенных циклов. Можно сделать и один цикл от 1
arr.size() ^ n
, но это число легко переполняется.
Например, при n = 3
функция должна вырождаться в следующее:
for (int i1 = 0; i1 < arr.size(); ++i1)
for (int i2 = 0; i2 < arr.size(); ++i2)
for (int i3 = 0; i3 < arr.size(); ++i3)
foo(arr[i3]);
Рекурсия, она спасает и не в таких ситуациях :)
int total = 0;
void foo(int&)
{
++total;
// do stuff
}
void cycle(int&a, void (*foo)(int&), int n, int level = 0)
{
if (level == n)
foo(a);
else
for(int i = 0; i < n; ++i) cycle(a,foo,n,level+1);
}
int main(int argc, const char * argv[])
{
int i = 0;
cycle(i,foo,4);
cout << total << endl;
}
Идея понятна? или дописать для конкретно массива?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
ЗдравствуйтеПередо мной стоит задание визуализировать принцип работы динамических структур (списки, стеки, очереди
Помогите, чтобы программа была написана с помощью функции с++
Есть связка из QSqlTableModel и QTableViewВ программе я работаю с моделью
Сразу прощу прощения за такое туманное название, не знаю как в двух словах описать задачу