Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Problemem plecakowy - źle działający algorytm



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mikewazowski



Dołączył: 02 Cze 2017
Posty: 1

PostWysłany: Pią Cze 02, 2017 9:34 pm  OP    Temat postu: Problemem plecakowy - źle działający algorytm Odpowiedz z cytatem Pisownia

Muszę wykonać przegląd wyczerpujący w problemie plecakowym - mam problem z funkcją bruteforce() która zawsze zwraca największą cenę zamiast rozwiązania problemu.
Proszę o wskazówki gdzie popełniam błąd a najlepiej pseudokod który pomoże napisać mi funkcję od nowa (oraz wyrozumiałość, dopiero się uczę)
Kod:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <time.h>
using namespace std;
int bruteforce(int ceny[], int wagi[], int W, int waga, int cena)
{
    int *A = new int[W];

    for (int i = 0;i<W ; i++) {
        int j = W;
        int xwaga = 0;
        int xcena = 0;
        int k;

        k = 1;
        for (j = 0; j < W; j++) {
            A[j] += k;

            k = A[j] / 2;
            A[j] = A[j] % 2;
        }
        if (k) break;

        for (k = 0; k < W; k++) {
            if (A[k] == 1) {
                xwaga = xwaga + wagi[k];
                xcena = xcena + ceny[k];
            }
        }

        if (xcena > cena && xwaga <= waga) {
            cena = xcena;
        }
    }

    return cena;
}

int main()
{

    int n, W,waga,cena;

    cout <<endl<< "pojemnosc placaka: ";
    cin >> W;
    cout << "ile przedmiotow:";
    cin >> n;
    cout<<endl;

  int *ceny=new int [n+1];
int *wagi = new int [n+1];

    for (int i = 0; i < n; i++)
    {
       waga= (rand()%100)+1;
       cena=(rand()%100)+1;
       ceny[i]=cena;
    wagi[i]=waga;
    cout<<"cena: "<<ceny[i]<<" waga: "<<wagi[i]<<endl;
    }

    cout<<"----------------"<<endl;
    int najcenniejszy=ceny[0];

    for (int i=0;i<n;i++)
    {
        if (ceny[i]>najcenniejszy)
            najcenniejszy=ceny[i];
    }
        cout<<"NAJCENNIEJSZY: "<<najcenniejszy<<endl;
     int najciezszy=wagi[0];
    for (int i=0;i<n;i++)
    {
        if (wagi[i]>najciezszy)
            najciezszy=wagi[i];
    }
      cout<<"NAJCIEZSZY: "<<najciezszy<<endl;
         cout<<"----------------"<<endl;

    cout<<"brute force: "<<bruteforce(ceny,wagi,n,najciezszy,najcenniejszy)<<endl;

    return 0;
}

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.15697 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |