Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 213

/ вопрос открыт /

Здравствуйте, эксперты!
вводится вес рюкзака, количество предметов со стоимостью и весом. надо отобрать самые лучше предметы в заданный рюкзак.
могу даже купить хорошую прогу icq=390431607

Приложение:
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. #include "Unit2.h"
  8. #include <algorithm>
  9. #include <iostream>
  10. #include <functional>
  11. using namespace std;
  12.  
  13. //---------------------------------------------------------------------------
  14. #pragma package(smart_init)
  15. #pragma resource "*.dfm"
  16. TForm1 *Form1;
  17. #define MAXWEIGHT 100
  18.  
  19.  
  20. int a[MAXWEIGHT];
  21.  
  22. int i, j;
  23. int aux;
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. //---------------------------------------------------------------------------
  31. __fastcall TForm1::TForm1(TComponent* Owner)
  32. : TForm(Owner)
  33. {
  34. Form1->Memo2->Clear();
  35. Form1->Memo4->Clear();
  36. Form1->Memo3->Clear();
  37. }
  38. //---------------------------------------------------------------------------
  39.  
  40. void __fastcall TForm1::Button1Click(TObject *Sender)
  41. { AnsiString buf,s;
  42. AnsiString buffer,st;
  43. AnsiString _buf,_s;
  44.  
  45.  
  46.  
  47. st = Edit3->Text;
  48. W = StrToInt(st);
  49. }
  50.  
  51. {
  52. s = Edit1->Text;
  53. _s = Edit2->Text;
  54. }
  55.  
  56.  
  57. if(W<100 && Edit1->Text != "" && Edit2->Text != "")
  58. {
  59.  
  60. int i, k =0;
  61. for(i=1,buf="";i<=s.Length()+1;i++)
  62. {
  63. if(i==s.Length()+1)
  64. {
  65. c[k++] = StrToInt(buf);
  66. n++;
  67. break;
  68. }
  69. if(s[i]==' ')
  70. {
  71. c[k++] = StrToInt(buf);
  72. n++;
  73. buf = "";
  74. }
  75. buf += s[i];
  76.  
  77. }
  78. }
  79.  
  80.  
  81. int i, k =0;
  82. for(i=1,_buf="";i<=_s.Length()+1;i++)
  83. {
  84. if(i==_s.Length()+1)
  85. {
  86. v[k++] = StrToInt(_buf);
  87. break;
  88. }
  89. if(_s[i]==' ')
  90. {
  91. v[k++] = StrToInt(_buf);
  92. _buf = "";
  93. }
  94. _buf += _s[i];
  95. }
  96. }
  97. }
  98.  
  99.  
  100.  
  101. }
  102.  
  103. //---------------------------------------------------------------------------
  104.  
  105. void __fastcall TForm1::Button2Click(TObject *Sender)
  106. {
  107.  
  108. for (i = 0; i <= W; ++i)
  109. {
  110. a[i] = 0;
  111. last_added[i] = -1;
  112. }
  113.  
  114. a[0] = 0;
  115.  
  116.  
  117. for (j = 0; j < n; ++j)
  118. if ((c[j] <= i) && (a[i] < a[i - c[j]] + v[j])) {
  119. a[i] = a[i - c[j]] + v[j];
  120. last_added[i] = j;
  121. }
  122.  
  123. aux = W;
  124.  
  125.  
  126. {
  127.  
  128.  
  129.  
  130.  
  131. aux -= c[last_added[aux]];
  132. }
  133.  
  134.  
  135. }
  136. //---------------------------------------------------------------------------
  137.  
  138. void __fastcall TForm1::N1Click(TObject *Sender)
  139. {
  140. Form2->Show();
  141. }
  142. //---------------------------------------------------------------------------
  143.  
  144. void __fastcall TForm1::N2Click(TObject *Sender)
  145. {
  146. Form1->Close();
  147. }
  148. //---------------------------------------------------------------------------
  149.  


sinnop Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: sinnop (статус: Посетитель)
Вопрос отправлен: 23 мая 2010, 19:04
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 35; последнее сообщение — 24 мая 2010, 11:55; участников в обсуждении: 3.

Страницы: [1] [2] [Следующая »]

IlluminatI

IlluminatI (статус: 2-ой класс), 23 мая 2010, 19:18 [#1]:

самые лучшие по цене или про весу? или по тому и другому вместе?
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 19:22 [#2]:

по цене, всмысле рюкзак определенным весом должен иметь наибольшую стоимость. получается по цене)
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 19:27 [#3]:

из множества предметов со свойствами «стоимость» и «вес», требуется отобрать некое число предметов таким образом, чтобы получить максимальную суммарную стоимость при одновременном соблюдении ограничения на суммарный вес.
могу прикрепить много теор. материала кто в силах справится до завтра с задачей. в идеале решение методом динамического программированя.
IlluminatI

IlluminatI (статус: 2-ой класс), 23 мая 2010, 20:23 [#4]:

прикрепи)
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 20:50 [#5]:

формулы суда не напишешь и прикрепить хз. может на почту пришлю? сюда просто формулы не вставляет
min@y™

min@y™ (статус: Доктор наук), 23 мая 2010, 21:13 [#6]:

А сколько платишь деньгов за выполнение задачи?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:14 [#7]:

а можете по данному коду написать коментарии к операторам. я просто delphi учил а c+ в глаза не видел. некоторые операторы даже не знаю для чего. я курсач сделал и прогу на c+ сдал. А препод неут поставил что типо ерунду принес которую он не понимает хотя сама прога работает :(. и сказал переделать. все попытки мои самому сделать алгоритм привели к тому что я щас голову пробью притолкой. :(( завтра похоже буду обдуваться за код (( в ночь залпом все операторы учить просто пипец
min@y™

min@y™ (статус: Доктор наук), 23 мая 2010, 21:20 [#8]:

Какие именно операторы ты там не понимаешь?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:20 [#9]:

скажите приемлимую цену. могу webmoney или на сотовый кинуть. не дайте потануть студенту))
min@y™

min@y™ (статус: Доктор наук), 23 мая 2010, 21:23 [#10]:

Цитата (sinnop):

скажите приемлимую цену

$100500.
Но если разжуёшь проблему - бутылка пива.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 23 мая 2010, 21:27 [#11]:

Посмотрел твой код из С++Билдера. Аццкий профи писал, 1600кг! Даже параметры циклов FOR объявлены глобально. Вот это жэсть... Я б за такой брейнфакинг руки отрубал нахрен!
А за присвоение переменным имён "a", "b", "c",..., "z" вообще надо расстреливать без суда и следствия.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:32 [#12]:

проблема 1) переделать код который выше выложен в обычное дельфи. чтобы работало в окошке дельфи нормально.
или 1*) мне изучать этод код до запятой или как там препод будит проверять я не знаю.
и бутылка пива может разная.
просто я не знаю что делать.
и цена хз. думаю до пятихатки можно сделать. просто на с+ она работает нормально.
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:34 [#13]:

вот вот, а если препод вопросы будит задавать а еще в синтаксесе операторах не разбираюсь, прикол будит один.
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:38 [#14]:

да и вообще если скрин дашь дельфи проги оформленной норм и работающей нормально(отбирающей предметы в рюкзак для 3-10 предметов) то цену пересмотрим. у меня стипуха горит о_О
min@y™

min@y™ (статус: Доктор наук), 23 мая 2010, 21:41 [#15]:

Завтра в 8 утра постучись мне в аську. Посмотрим, что сделать можно. А щас я мыться иду и спать. Утром на работу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:42 [#16]:

ммм...мне завтра ее сдавать
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 21:46 [#17]:

или все схвачено ;) не появлюсь в уневере типо шею сломал в душе о_О
min@y™

min@y™ (статус: Доктор наук), 23 мая 2010, 22:11 [#18]:

Цитата (sinnop):

ммм...мне завтра ее сдавать

Молодец! Тянул весь семестр, а теперь хочешь всё и сразу. А я спать хочу, мне утром на работу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 22:27 [#19]:

в принципе согласен..оболтус но
весь семестр не тянул а написал хорошую теор. работу и оформил. просто кодинг забросил и думал той какая есть прога будит вполне достаточно. а оказалась наоборот. ладно в 8 в асю напишу
sinnop

sinnop (статус: Посетитель), 23 мая 2010, 22:35 [#20]:

а как вам такая лабуда? О____О=====
uses
SysUtils;
var
P:array of extended;
G:array of extended;
t:array of extended;
W:array of integer;
I:array of integer;
j,c,m,k,l,v,j1:integer;
begin
writeln('w=');
readln(m);
writeln('i=');
readln(j); j1:=j;
l:=0;
v:=m-1;
setlength(i,j);
for j := 0 to high(I) do
begin I[j]:=l+1;
l:=l+1;
end;
setlength(P,j1);
for j:= 0 to high(P) do
begin write('vvedite P[i]');
readln(P[j]);
end;
setlength(G,j1);
for j:= 0 to high(G) do
begin write('vvedite G[i]');
readln(G[j]);
end;
setlength(W,v);
setlength(t,j1);
for j:= 0 to high(t) do
begin
T[j]:=p[i[j]]/g[i[j]];
end;
for j:= 0 to high(t) do
begin
if (t[j]=t[j+1]) and (g[j]<g[j+1])
then t[j]:=t[j]+0.0000001
else t[j+1]:=t[j+1]+0.0000001;
end;
for j := 0 to high(i) do
if t[i[j]]<t[i[j+1]]
then
begin c:=i[j+1];
i[j+1]:=i[j];
i[j]:=c;
end;
w[0]:=1;
k:=0;
for j := 0 to high(i) do
begin
while k<=m do
begin
w[v]:=i[j];
v:=v-1;
k:=k+1;
end;
end;
for v := 0 to high(w) do
write('w[i]',w[v]:2);
___________________________

идея всей этой бредятины- работа с индексами массивов. и с помощью уличной магии поменять их местами а потом сделать W массив типо он будит говорить нам о индексов предметов в рюкзаке. например: W= 1,1,1,1,1,5 где 1 и 5 это номера предметов введенных пользователем.
реал шею свехнешь о_О

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.03 сек.