PHP - Knapsack problem

JoOnKokeiltuKauan

Oon tällä hetkellä ohjelmoimassa ja testaamassa perinteistä "Knapsack problem" ongelmaa PHP:llä.

Olen käyttänyt Rosettacodesta löytyvää PHP esimerkkiä (sitä pidempää).
http://rosettacode.org/wiki/Knapsack_problem/0-1#PHP

Olen lisännyt koodiin input-käyttöliittymän, jolloin käyttäjä voi itse vaihtaa säkin kestävyyden.


Kestävyys:








Tämän jälkeen koodi PHP ottaa kopin..

## Solve
$workload = $_GET['workload'];

list ($m4,$pickedItems) = knapSolveFast2($w4, $v4, sizeof($v4) -1, $workload,$m,$pickedItems);

Ja tämä on kaikki muutos, jonka olen koodiin tehnyt.

KYSYMY:
Miksi koodi ei osaa tulostaa vastausta esiasetettuun taulukkoon, mikäli säkin kantavuudeksi on käyttöliittymässä syötetty pienempi luku kuin 30?

Täällä voi testata ohjelmaa käytännössä:
http://users.metropolia.fi/~velipekr/index.php

4

707

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • hmhmhmhmhmhm

      En osaa äkkiseltään sanoa, mutta mikset laita koodiin vähän välitulostusta, niin näet mitä kohtia se suorittaa ja mitä ei.

    • JoOnKokeiltuKauan

      Lähinnä siis ihmetyttää, ettei tuo alkuperäinenkään koodi toimi. Siis tuo, jota tuolla Rosettacodessa on tarjottu. Samaa koodia toistetaan myös muissa ohjeissa.

      Eli ts. eikö tuon alkuperäisen koodin pitäisi toimia, sillä en ole oikeastaan muokannut sitä ollenkaan? :/

      Tässä kuitenkin phps http://users.metropolia.fi/~velipekr/index.phps

      • hmhmhmhm

        Se on hyvin mahdollista. :/

        Tarkoitinkin juuri sitä, että tutkisit sitä alkuperäistä koodia samalla tavalla. Josko löytäisit, mikä siinä on vikana.


    • Retaattori

      Melkoinen himmeli tuo functio joka ei siis toimi. Korvaa alkuperäinen allaolevalla hieman pelkistetymmällä niin pitäisi toimia.

      function knapSolveFast2($w, $v, $i, $aW, $m, $pi) {
      global $numcalls;
      $numcalls ;
      $vs = $v; // luodaan uusi joukko arvoille
      arsort($vs); //järjestetään joukko suurimmasta pienimpään
      $we = 0; // muuttuja valittujen painolle
      $va = 0; // muuttuja valittujen arvoille
      foreach($vs as $a){
      $x = 0;
      foreach($v as $b){
      if(!in_array($x,$pi) && $a == $b){
      if($we $w[$x] <= $aW){
      $we = $w[$x];
      $pi[]= $x;
      $va = $v[$x];
      }
      }
      $x ;
      }
      }
      return array($va,$pi);
      }

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Duunarit hylkäsivät vasemmistoliiton, siitä tuli feministinaisten puolue

      Pääluottamusmies Jari Myllykoski liittyi vasemmistoliittoon, koska se oli duunarien puolue. Sitä samaa puoluetta ei enää
      Maailman menoa
      208
      5175
    2. Olen väsynyt tähän

      En osaa lopettaa ja koen huonoa omaatuntoa tästä. Kaikki on muutenkin turhaa ja tekemisesi sattuvat. Tunteita on vain hy
      Ikävä
      46
      4880
    3. Oppiiko vasemmistolaiset valehtelun jo kotonaan?

      Sillä vasemmistolaiset/äärivasemmistolaiset valehtelee ja keksii asioita omasta päästään todella paljon. Esim. joku vas
      Maailman menoa
      202
      2769
    4. Seuraava hallituspohja - Kokoomus, kepu, persut + KD

      Kokoomus saa ainakin 20% kannatuksen ensi vaaleissa, keskusta sanoisin noin 15%, persut todennäköisesti enemmän, ehkä 17
      Maailman menoa
      135
      2358
    5. Olenko mies sinun mielestä outo?

      Saat vastata rehellisesti.
      Ikävä
      65
      1992
    6. Maailman laiskin eläin: persu

      Persu ei ole eläessään laittanut rikkaa ristiin itsensä elättämiseen. Luonnossa tuollainen ei olisi mahdollista, mutta s
      Maailman menoa
      112
      1871
    7. Millasia unelmia sulla on?

      onko unelmia...?
      Ikävä
      67
      1804
    8. Miten usein toivot

      Tai olet toivonut että olisimme lähekkäin vai toivotko ollenkaan?
      Ikävä
      208
      1694
    9. Miksi et voi tutustua minuun irl?

      Vastaa yleisellä tasolla/ympäripyöreästi, jos pelkäät tunnistamisia.
      Ikävä
      184
      1323
    10. Martina tienaa itse rahansa

      Ei tarvitse anella elättäjältään rahaa, ruokaa ja laukkuja.
      Kotimaiset julkkisjuorut
      261
      1042
    Aihe