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

105

    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ä.

    Takaisin ylös

    Luetuimmat keskustelut

    1. Mielessäni vieläkin T

      Harmi että siinä kävi niinkuin kävi, rakastin sinua. Toivotan sulle kaikkea hyvää. Toivottavasti löydät sopivan ja hyvän
      Ikävä
      39
      1631
    2. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      6
      1341
    3. Ei luottoa lakko maahan

      Patria menetti sovitun ksupan.
      Suomen Keskusta
      9
      1289
    4. Nähtäiskö ylihuomenna taas siellä missä viimeksikin?

      Otetaan ruokaöljyä, banaaneita ja tuorekurkkuja sinne messiin. Tehdään taas sitä meidän salakivaa.
      Ikävä
      1
      1285
    5. Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita

      Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita – neljä Jyväskylän Outlaws MC:n jäsentä vangittu: "Määrät p
      Jyväskylä
      42
      1277
    6. Persut petti kannattajansa, totaalisesti !

      Peraujen fundamentalisteille, vaihtkaa saittia. Muille, näin sen näimme. On helppo luvata kehareille, eikä ne ymmärrä,
      Maailman menoa
      4
      1253
    7. Sinäkö se olit...

      Vai olitko? Jostain kumman syystä katse venyi.. Ajelin sitten miten sattuu ja sanoin ääneen siinä se nyt meni😅😅... Lis
      Ikävä
      0
      1234
    8. Housuvaippojen käyttö Suomi vs Ulkomaat

      Suomessa housuvaippoja aletaan käyttämään vauvoilla heti, kun ne alkavat ryömiä. Tuntuu, että ulkomailla housuvaippoihin
      Vaipat
      1
      1210
    9. Hyvää yötä ja kauniita unia!

      Täytyy alkaa taas nukkumaan, että jaksaa taas tämän päivän haasteet. Aikainen tipu madon löytää, vai miten se ärsyttävä
      Tunteet
      2
      1170
    10. Lepakot ja lepakkopönttö

      Ajattelin tehdä lepakkopöntön. Tietääkö joku ovatko lepakot talvella lepakkopöntössä ´vai jossain muualla nukkumassa ta
      1
      1146
    Aihe