Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


Код:
 
#include <iostream>
using std::cin;
using std::cout;
 
#define MAXN 20
 
int n,w;
int weight[MAXN],price[MAXN], best[MAXN],now[MAXN];
long int maxprice;
 
 
void init() {
  int i;
  cin >>n >> w;
  for(int i=0; i<n;++i) cin >> weight[i];
  for(int i=0; i<n;++i) cin >> price[i];
}
 
 
 
 
void rec(int k, int w, long int st) {
  if ( k >= n && st > maxprice){
      memcpy (best ,now, sizeof(best));
      maxprice=st;
  } else if (k<=n) {
           for(int i = 0; i < w / weight[k]; ++i ) {
                 now[k] = i;
                 rec(k + 1, w - i * weight[k], st + i * price[k]);
           }
  }
}
 
int main(){
  init();
  rec(0, w, 0);
  cout <<"   " << maxprice << "\n";
  return 0;
 
}
 


Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 11:53 13-03-2006 | Исправлено: wInuX, 11:57 13-03-2006
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru