Здравствуйте дорогие. Подскажите пожалуйста как в данной программе сделать так чтобы функция int findMin( int value, std::array<int, 3> coins ) принимала вторым параметром массив любого размера. Подозреваю что это можно сделать через шаблоны, возможно ли? Не хотелось бы вторым параметром делать всеж таки вектор потому что пропадает замечательная красивая инициализация с помощью списка. Вот программка которая считает как с помощью минимального количества монеток заданных номиналов собрать нужную сумму:
#include <vector>
#include <array>
#include <iostream>
int findMin( int value, const std::array<int, 3>& coins )
{
std::vector<int> mins;
mins.assign( value + 1, 100 );
mins[0] = 0;
for( int i = 0; i < value + 1; ++i )
{
for( int j = 0; j < coins.size(); ++j )
{
if( ( coins[j] <= i ) && ( mins[ i - coins[j] ] + 1 < mins[i] ) )
mins[i] = mins[ i -coins[j] ] + 1;
}
}
return mins.back();
}
int _tmain(int argc, _TCHAR* argv[])
{
const std::array<int, 3> coins = { 1, 4, 5};
std::cout << findMin(17, coins ) << std::endl;
std::cout << findMin(11, coins ) << std::endl;
std::cout << findMin(7, coins ) << std::endl;
std::cin.get();
return 0;
}