Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
1

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

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

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

сам код

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2012, 19:18
Ответы с готовыми решениями:

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

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

исправьте,пожалуйста,ошибки в программе
Цель задания:в матрице 10х10 найти кол-во локальных минимумов и сумму элементов(по модулю)выше...

Пожалуйста, исправьте ошибки в программе
var n:integer; a:array of string; //Переменная типа string, который будет пройден в след....

3
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
27.12.2012, 19:22 2
Никто разбирать простыню кода не будет. Более того это не форум экстрасенсов чтоб угадать условие задачи.

Как исправить:
1. Разбить задачу на подзадачи и проверить выполнение подзадач и потом их только объединять в одну.
2. Пользуйтесь отладчиком или выводите промежуточные результаты чтоб проверить выполнение каждого шага.
0
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
27.12.2012, 20:05  [ТС] 3
Это задача о рюкзаке. есть контейнер в который нужно поместить предметы с определённым весом и ценой. чтобы набор из этих предметов был с максимальной ценой
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
28.12.2012, 17:12 4
Честно говоря не могу понять что делает ваша программа. Я даже не могу понять какой максимальный вес.
Что необходимо сделать.
1. Двухмерный массив для вариантов наполнения. Проинициализировать -1.
Кол-во вариантов для n предметов будет n!(количество перестановок)
2. Полным перебором заполняем варианты(то есть сохраняем индексы добавленных предметов). Тут необходимо добавить проверку переполнения и прерывать заполнение варианта если следуююший предмет переполнит(продолжать не надо. Если и есть предмет который еще может быть добавлен, то это покажет другой вариант). Тут же можно сразу считать и стоимость для всех вариантов(сохраняя её в другой массив).
3. Из всех вариантов выбираем тот, который имеет максимальную стоимость.
0
28.12.2012, 17:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2012, 17:12
Помогаю со студенческими работами здесь

Исправьте ошибки в программе (файл не найден)
при запуске программы в Turbo Pascal пишет файл не найден( var ch : char; f,sp: text;...

Исправьте ошибки в легкой программе и выложите рабочий вариант
#include &lt;stdio.h&gt; void sortirovka(int mas,int n); { for (i=0; i&lt;(n-1); i++) { for (j=(i+1);...

Исправьте ошибки в программе удаления заданных элементов массива
Дали курсовую сделал и ошибка какая то, помогите исправить пожалуйста. Вот тема: Разработать в...

Исправьте ошибки в программе и запишите что будет напечатано на экране
War: a,b,c - integer, x: real; Bigin A=7, b=3,2, c:= a+b; Writln(summa= , c); C:=c/2;...

Исправьте ошибки в программе проверки соотношения "рост-вес"
main() /* 1 */ {/* 2 */ int weight, height; /* вес в фунтах, рост в дюймах */ /* 4 */ scanf(&quot;...

Задача о рюкзаке, найти ошибки в коде
Ребят написал код ,но работает раз через раз((Если можете напишите где косяки вот код: static void...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru