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

705

    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. 6 kW saunan lämmityksestä kohta 10 euron lisämaksu / kerta

      Kokoomuslainen sähköyhtiöiden hallitsema Energiavirasto ehdottaa 5 kW:n rajaa, jonka ylittämisestä tulee lisämaksu. Tark
      Maailman menoa
      256
      7623
    2. 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
      149
      4028
    3. Oppiiko vasemmistolaiset valehtelun jo kotonaan?

      Sillä vasemmistolaiset/äärivasemmistolaiset valehtelee ja keksii asioita omasta päästään todella paljon. Esim. joku vas
      Maailman menoa
      123
      2261
    4. 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ä
      26
      1747
    5. Olenko mies sinun mielestä outo?

      Saat vastata rehellisesti.
      Ikävä
      47
      1540
    6. Millasia unelmia sulla on?

      onko unelmia...?
      Ikävä
      33
      1412
    7. Minneapolisin tapauksesta hyvä video

      Runoilijan auto oli poikittain tiellä ja kun poliisit lähestyivät sitä, runotyttö painoi reippaadti kaasua. Auto syöksäh
      Maailman menoa
      342
      1234
    8. Miksi et voi tutustua minuun irl?

      Vastaa yleisellä tasolla/ympäripyöreästi, jos pelkäät tunnistamisia.
      Ikävä
      141
      1022
    9. Miten usein toivot

      Tai olet toivonut että olisimme lähekkäin vai toivotko ollenkaan?
      Ikävä
      141
      1001
    10. Tiesitkö? Uusi Bachelor on raivannut tietään määrätietoisesti somessa, myös Böckermanin ex-rakas!

      Arttu Kilpeläinen tuli julkisuuteen Pernilla Böckermanin rakkaana. Pariskunta päätyi eroon v. 2024. Ex-poliisi Kilpelä
      Suomalaiset julkkikset
      8
      993
    Aihe