Knapsak

 Berikut saya tampilkan hasil praktikum pada hari selasa kemarin. O ya, ini adalah kodingan knapsak untuk pemrogaman java. 
Judul Spoiler:



//             if bi + B[i-1,w-wi] > B[i-1,w]
    //    B[i,w] = bi + B[i-1,w-wi]
    //              else
    //    B[i,w] = B[i-1,w]
                    B[i][w] = Math.max( profit[i] + B[i-1][w-weight[i]] , B[i-1][w] );

    //   else
    //              B[i,w] = B[i-1,w]
                else
                    B[i][w] = B[i-1][w];
            }
         }
        // cek
        System.out.println("\n" + "MAP =");

        for (int w = 0; w <= W; w++) {
            if(w == 0)
                System.out.print("i / w");
            System.out.print("\t" + w);
        }
        System.out.println();
     
        for (int i = 0; i <= N; i++) {
            System.out.print(i);
            for (int w = 0; w <= W; w++) {
                System.out.print("\t" + B[i][w]);
            }
            System.out.println("");
        }
     
        // IV. determine which items to take
        boolean[] take = new boolean[N+1];      // inisialisasi, default semuanya false


        // Let i=N and k=W  // Mulai dari Pojok Kanan Bawah
        int i = N;
        int k = W;
     
        // While  i > 0  and  k > 0  // Lakukan perintah di bawah ini sampai selesai
            while ( i > 0 && k > 0) {
     
        //  if B[i,k] ≠ B[i-1,k] then   // Jika cell di atasnya BEDA nilainya, maka
 //     // Masukkan item ke dalam Tas
 //  k = k-wi   // Geser cursor ke kiri sebanyak wi (ketukar)
 //  i = i-1   // Geser cursor ke atas (ketukar)
            if (B[i][k] > B[i-1][k]) {
                take[i] = true;
                k = k - weight[i];
                i--;
            }
         
 //  else          // TETAPI Jika SAMA nilainya, maka
 //  i = i-1   // Geser cursor ke atas
            else
                i--;
        }
     
        // print results
        System.out.println("\n" + "RESULTS = " + "\n" + "item" + "\t"
                + "weight" + "\t" + "profit" + "\t" + "take");
        for (int n = 1; n <= N; n++) {
            System.out.println(n + "\t" + weight[n] + "\t" + profit[n]
                    + "\t" + take[n]);
        }

 
    }
}



Silahkan di pelajari kalau ini bermanfaat.

Komentar

Postingan populer dari blog ini

Batu Kertas Gunting

Main Bumerang

Menambah Space di Drive C