Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2010, 20:26   #1
Antonio1991
Новичок
Джуниор
 
Регистрация: 10.10.2010
Сообщений: 3
Восклицание программа на С

Всем доброе время суток. Хотелось бы попросить помоч с программой. Сама задача имеет следующий вид: организации нужно нанять переводчиков для перервода с определенного множества языков. Каждый из переводчиков владеет несколькими языками и требует определенную зарплату. Требуется определить, каких переводчиков нанять, чтобы сумма расходов на зарплату была минимальной.
Как это сделать? помогите плиз, срочно надо!
Antonio1991 вне форума Ответить с цитированием
Старый 10.10.2010, 20:32   #2
q_proger
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 48
По умолчанию

А пример входных данных есть?
Точнее важны ограничения, сколько максимум может быть переводчиков и языков?
q_proger вне форума Ответить с цитированием
Старый 10.10.2010, 20:36   #3
Antonio1991
Новичок
Джуниор
 
Регистрация: 10.10.2010
Сообщений: 3
По умолчанию

входные данные выбираются самостоятельно. лично я сделал чтение из файла в следующем виде:
6 8 // где 6 - кол-во языков, а 8 - кол-во переводчиков
1 0 1 1 0 0 // 1, если переводчик знает язык, 0 если не знает
1 0 0 0 1 0
0 1 1 1 1 0
0 0 0 0 1 1
1 0 1 0 0 1
0 0 0 0 1 0
1 0 0 1 0 1

ну и в отдельном файле для удобства их 3арплаты
100 200 300 700 350 150 270 900
ну собственно все цифры, знания языков и их количество можно выбирать самому...
а никакой важности максимума нет
Antonio1991 вне форума Ответить с цитированием
Старый 10.10.2010, 20:40   #4
q_proger
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 48
По умолчанию

Это я к тому, что если их немного, то можно особо не мудрствовать насчет алгоритма и просто устроить глобальный перебор.
q_proger вне форума Ответить с цитированием
Старый 10.10.2010, 20:42   #5
Antonio1991
Новичок
Джуниор
 
Регистрация: 10.10.2010
Сообщений: 3
По умолчанию

к сожалению там как раз алгоритм и нужен...
не у кого ни каких идей нету??

Последний раз редактировалось Antonio1991; 10.10.2010 в 21:19.
Antonio1991 вне форума Ответить с цитированием
Старый 10.10.2010, 23:56   #6
q_proger
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 48
По умолчанию

Код:
// входные данные input и salary
const int L = 6, T = 7;
bool input[T][L] = {
    { 1, 0, 1, 1, 0, 0 },
    { 1, 0, 0, 0, 1, 0 },
    { 0, 1, 1, 1, 1, 0 },
    { 0, 0, 0, 0, 1, 1 },
    { 1, 0, 1, 0, 0, 1 },
    { 0, 0, 0, 0, 1, 0 },
    { 1, 0, 0, 1, 0, 1 }};
int salary[T] =
    { 100, 200, 300, 700, 350, 150, 270 };



bool translators[T] = {0};
bool best_comb[T] = {0};

int payment()
{
    int res = 0;
    bool langs[L] = {0};
    for (int i = 0; i < T; i++) {
        if (translators[i]) {
            for (int j = 0; j < L; j++) {
                if (input[i][j]) langs[j] = true;
            }
            res += salary[i];
        }
    }
    for (int i = 0; i < L; i++) {
        if (!langs[i]) return 0xFFFFFFF;
    }
    return res;
}

int main()
{
    int min_payment = 0xFFFFFFF;
    int n = 1 << T;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < T; j++) {
            translators[j] = (i >> j) % 2;
        }
        int p = payment();
        if (p < min_payment) {
            min_payment = p;
            memcpy(best_comb, translators, sizeof(best_comb));
        }
    }
    cout << "SUM Salary = " << min_payment << "\n";
    for (int i = 0; i < T; i++) {
        if (best_comb[i]) cout << i << " ";
    }
    cout << " - translators\n";

    return 0;
}
Единственное что, когда L и T не будут константами, статические массивы или сделай с запасом или объяви динамически

Последний раз редактировалось q_proger; 10.10.2010 в 23:58.
q_proger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа jenachacha Фриланс 4 10.02.2010 19:58
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56