Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LowRayder
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
#1

исправьте ошибки в программе о рюкзаке - C++

27.12.2012, 19:18. Просмотров 942. Ответов 3
Метки нет (Все метки)

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

сам код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iomanip>
using namespace std;
#define max_w 15
#define obj 6
int main()
{
int a[max_w+1][obj],p[6],w[6],temp=0,k=0,x[obj];
p[0]=3;p[1]=6;p[2]=7;p[3]=9;p[4]=11;p[5]=18;
w[0]=1;w[1]=2;w[2]=3;w[3]=5;w[4]=6;w[5]=8;
for(int j=0;j<obj;j++)
{
for(int i=0;i<max_w+1;i++)
{
if(i<w[j])
{
    if(i==0 || (j-1)<0)a[i][j]=0;
    else a[i][j]=a[i][j-1];
}
if(i>=w[j])
{
    if((j-1)<0)a[i][j]=p[j];
 else
{
    if(a[i][j-1]>(a[k][j-32]+p[j]))a[i][j]=a[i][j-1];
    else a[i][j]=a[k][j-1]+p[j];
                k++;
 }
     }
 }
     k=0;
 }
     for(int i=0;i<max_w+1;i++)
     {
for(int j=0;j<obj;j++)
{
cout<<setw(4)<<a[i][j]<<" ";
}
cout<<endl;
}
k=max_w;
cout<<"\nThe Answer is = ";
for(int i=obj-1;i>=0;i--)
{
if(a[k][i]!=a[k][i-1])
{
 x[i]=1;k=k-w[i];
}
        else if(i==0 && a[k][i]!=0)x[i]=1;
    else
        x[i]=0;
     }
 for(int i=0;i<obj;i++)cout<<x[i]<<" ";
 cout<<"\n\nThe maximum value is = "<<a[max_w][obj-1];
     _getch();
 }
Прямой ход на (С ++)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for(int j=0;j<obj;j++){
for(int i=0;i<max_w+1;i++){
if(i<w[j]){
if(i==0 || (j-1)<0)a[i][j]=0;
else a[i][j]=a[i][j-1];
}
if(i>=w[j]){
if((j-1)<0)a[i][j]=p[j];
else{
if(a[i][j-1]>(a[k][j-1]+p[j]))a[i][j]=a[i][j-1];
else a[i][j]=a[k][j-1]+p[j];
k++;
}
}
}
k=0;
}
Обратный ход на (С++)

C++
1
2
3
4
5
6
7
8
9
10
for(int i=obj-1;i>=0;i--)
{
if(a[k][i]!=a[k][i-1])
{
    x[i]=1;k=k-w[i];
}
else if(i==0 && a[k][i]!=0)x[i]=1;
else
x[i]=0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 19:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос исправьте ошибки в программе о рюкзаке (C++):

Исправьте ошибки в программе - C++
Программа:Нужно ввести 2 числа и программа должна посчитать их сумму,частное,разделить,умножить и если в знаменателе будет &quot;0&quot;, программа...

Исправьте ошибки что найдете в моей программе. - C++
помогите пожалуйста бедному студенту исправьте пожалуйста ошибки что найдете в моей программе программа читает матрицу проверяет или...

Исправьте ошибки - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void main () { int N,M; int min=0, i, j;//переменные для цикла ...

Исправьте ошибки - C++
На 10, 12, 16, 18 строках K, p, N, K соответственно, выдаёт was not declared in this scope. Помогите исправить. #include &lt;iostream&gt; ...

исправьте ошибки - C++
Задание прикрепил, 1 вариант. Вот такой код набрал, как описывает задание, но выдает ошибки, что делать не понимаю. ...

Исправьте ошибки - C++
Ошибка не объявлена __MessageBoxA , chTitle , hProcess #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;Windows.h&gt;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Learx
1035 / 842 / 86
Регистрация: 31.03.2010
Сообщений: 2,465
27.12.2012, 19:22 #2
Никто разбирать простыню кода не будет. Более того это не форум экстрасенсов чтоб угадать условие задачи.

Как исправить:
1. Разбить задачу на подзадачи и проверить выполнение подзадач и потом их только объединять в одну.
2. Пользуйтесь отладчиком или выводите промежуточные результаты чтоб проверить выполнение каждого шага.
0
LowRayder
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
27.12.2012, 20:05  [ТС] #3
Это задача о рюкзаке. есть контейнер в который нужно поместить предметы с определённым весом и ценой. чтобы набор из этих предметов был с максимальной ценой
0
Learx
1035 / 842 / 86
Регистрация: 31.03.2010
Сообщений: 2,465
28.12.2012, 17:12 #4
Честно говоря не могу понять что делает ваша программа. Я даже не могу понять какой максимальный вес.
Что необходимо сделать.
1. Двухмерный массив для вариантов наполнения. Проинициализировать -1.
Кол-во вариантов для n предметов будет n!(количество перестановок)
2. Полным перебором заполняем варианты(то есть сохраняем индексы добавленных предметов). Тут необходимо добавить проверку переполнения и прерывать заполнение варианта если следуююший предмет переполнит(продолжать не надо. Если и есть предмет который еще может быть добавлен, то это покажет другой вариант). Тут же можно сразу считать и стоимость для всех вариантов(сохраняя её в другой массив).
3. Из всех вариантов выбираем тот, который имеет максимальную стоимость.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2012, 17:12
Привет! Вот еще темы с ответами:

Исправьте ошибку в программе С++: Вычислить Z - C++
В 26-й строчке и, возможно, ниже есть ошибка. Помогите, пожалуйста, а то я плох в данном языке... Ну и, конечно, все на простейшем уровне) ...

исправьте ошибки в игре - C++
Всем доброго времени суток. Прошу помощи: 1) Помогите сделать так, если я захожу в пункт меню (Enter'om), то потом не могу пользоваться...

Исправьте мне ошибки! - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; using...

исправьте ошибки в коде - C++
посмотрите пожалуйста что не так с кодом? вот задание:Дана целочисленная квадратная матрица. Определить: • количество строк, не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.12.2012, 17:12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru