Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Алгоритм] Не составляемое число


Автор: snake123 16.10.2006, 17:07
Помогите пожалуйста с алгоритмом для такой задачи:
задан массив натуральных чисел P[n]. Найти минимальное число, не представляемое суммой никаких элементов массива P. Сумма может состоять и из одного слагаемого, но каждый элемент массива может входить в неё только один раз...

Автор: Alexeis 16.10.2006, 17:33

M
alexeis1
Модератор: Название темы должно отражать ее суть!

Автор: MAKCim 16.10.2006, 17:58
да запросто
Код

int min(std :: vector<int>& used)
{
    int i = 1;
    for (int j = 0; j < used.size(); ++j) {
        if (used[j] == i) ++i;
    }
    return i;
}

void recursive(int index, int sum, std :: vector<int>& vector, std :: vector<int>& used, int& number)
{
    if (index == vector.size()) {
        if (sum == 0) return;
        used.push_back(sum);
        if (number == sum)
            number = min(used);
        return;
    }
    recursive(index + 1, sum + vector[index], used, number);
    recursive(index + 1, sum, used, number);
}

void find(std :: vector<int>& vector, int& number)
{
    number = 1;
    std :: vector<int> used;
    recursive(0, 0, vector, used, number);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)