Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу исправить ошибки в задаче о рюкзаке
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Lowrayder Lowrayder вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.10.2012
По умолчанию исправить ошибки в задаче о рюкзаке - 27.12.2012, 20:22

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

Это задача о рюкзаке. есть контейнер определённо грузоподёмности в который нужно поместить предметы с определённым весом и ценой. чтобы набор из этих предметов был с максимальной ценой


сам код
cpp Код:
#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();
 }



прямой ход

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;
}

обратный ход


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;
}

Последний раз редактировалось Влад; 29.12.2012 в 22:31
Ответить с цитированием
  (#2 (permalink)) Старый
Odin_KG Odin_KG вне форума
Member
 
Сообщений: 956
Сказал(а) спасибо: 0
Поблагодарили 17 раз(а) в 16 сообщениях
Регистрация: 28.01.2007
По умолчанию 28.12.2012, 17:18

Цитата:
после компиляции выдают не те результаты в конце
Дык, поставьте breakpoint (в Visual Studio это клавиша F9, которую нужно нажать на нужной строке) и прошагайте отладчиком код (в Visual Studio это клавиша F10 или F11). Кто это за вас делать будет ? Отладка - это часть программирования.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как исправить ошибки? SADIST C++ Builder 11 04.10.2011 16:47
Как исправить баг ошибки schanker2 Вопросы начинающих программистов 9 18.11.2009 11:52
Требуется исправить ошибку в задаче на символьные массивы Katiox-xa С/С++ 3 08.10.2008 21:44
Как исправить ошибки в программе gip Assembler 1 27.04.2006 21:04
C# Lan как исправить ошибки System.Mega Сетевое программирование 0 03.04.2006 02:30
Как исправить USB ошибки kelz Железо. Написание драйверов 3 16.03.2006 09:57
Как исправить ошибки Gandalf MSSQL Server 1 14.03.2005 17:36
как исправить ошибки gethostbyname newbie C++ на Unix 12 21.07.2004 14:55
WinAPI vs MFC как исправить ошибки Vladimir v2.0 WinAPI 16 20.05.2004 02:56
Как исправить ошибки в BDE An_Life MSSQL Server 1 07.03.2003 10:40
Как исправить ошибки в коде Anonymous С/С++ 1 31.01.2003 20:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов