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

293

    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. Klaukkalan onnettomuus 4.4

      Klaukkalassa oli tänään se kolmen nuoren naisen onnettomuus, onko kellään mitään tietoa mitä kävi tai ketä onnettomuudes
      Nurmijärvi
      102
      4457
    2. Yleltä tyrmäävä uutinen

      Ylen uutisen mukaan Raamattu on keksitty n. 2600. Putoaako kristinuskolta pohja kokonaan alta pois? https://yle.fi/a/74
      Luterilaisuus
      382
      1178
    3. Missä mustasusi on?

      Suden aloituksia ei ole näkynyt moneen päivään.
      Ikävä
      186
      1052
    4. Pakko kertoa mies

      Äitini tietää, että olen ihastunut sinuun. 😳 halusin että hän näkisi sinun kuvan ja pyysin googlaamaan sinua. Kommentti
      Ikävä
      109
      1032
    5. Sinä vain tulit elämääni

      Ja joku tarkoitus sillä on ollut. Näyttämään mitä olen ja kuinka arvokas voisin olla. Se muutti ja käänsi elämäni suunna
      Ikävä
      83
      903
    6. Millaisia ajatuksia on kaivatusta ja tilanteestanne tänään?

      Kerro omista mietteistäsi tai lähetä terveisiä. Ehkä hän lukee ja lähettää sinulle takaisin omia mietteitään.
      Ikävä
      47
      901
    7. Miten koskettaisit häntä?

      Miten lähestyisit jos hän olisi lähelläsi nyt..
      Ikävä
      64
      891
    8. Riitta-Liisa ja Toni Roponen: Ero! Riitta-Liisa Roponen kertoo asiasta Instagramissa.

      Riitta-Liisa ja Toni Roponen eroavat. Riitta-Liisa Roponen kertoo asiasta Instagramissa. – Talvi on ollut elämäni synk
      Maailman menoa
      10
      847
    9. Mitä ajattelet

      Kaivattusi uskosta tai onko hän uskossa?
      Ikävä
      64
      846
    10. Onko se niin

      Että meillä molemmilla on niin isot egot ettei voi alentua myöntämään kuin tykkää toisesta
      Ikävä
      64
      816
    Aihe