Jawaban pertanyaan pisang gudang

pemrograman


Gudang, yang dengan kata lain disebut gudang, adalah suatu bangunan yang digunakan untuk menyimpan bahan mentah atau barang jadi sampai diekspor ke tempat lain.

Ada sejumlah gudang yang digunakan untuk menyimpan dan mematangkan pisang dalam jumlah besar. Setelah pisang matang, setiap pemilik gudang akan mengemas semua pisang tersebut sebagai satu unit dan mengangkutnya ke bandara untuk diekspor ke negara lain. Semua gudang ini berdekatan satu sama lain dan pemiliknya ramah. Jadi saat mengangkut pisang, mereka ingin berbagi kendaraan (jika memungkinkan) untuk mengurangi biaya transportasi. Namun hanya dua orang yang dapat berbagi kendaraan dan setiap kendaraan dapat membawa beban “w” ton sekaligus.

Diketahui suatu susunan yang mewakili berat pisang masing-masing pemilik, batas maksimum yang dapat ditampung kendaraan tersebut, tentukan jumlah minimum kendaraan yang diperlukan untuk mengangkut semua pisang tersebut ke bandara.
Catatan: Tidak ada beban yang lebih berat dari batas yang diberikan.
Berat pisang diukur dalam ton.

Apa yang saya coba:

mendapatkan jawaban yang salah untuk kodenya

C
#include <stdio.h>
#include <stdlib.h>

void clearInputBuffer() {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}

int compare(const void *a, const void *b) {
    return (*(int *)a - *(int *)b);
}

int minVehicles(int arr[], int n, int capacity) {
    // Sort the array in non-decreasing order
    qsort(arr, n, sizeof(int), compare);

    // Use two pointers approach to count the number of vehicles needed
    int count = 0;
    int i = 0;
    int j = n - 1;
    while (i <= j) {
        // If the sum of the current pair is less than or equal to the capacity, load both items
        if (arr[i] + arr[j] <= capacity) {
            i++;
            j--;
        } else {
            // If not, load the heavier item in a separate vehicle
            j--;
        }
        count++;
    }

    return count;
}

int main() {
    int n, capacity;
    printf("Enter the weights of the items separated by space: ");
    
    // Read the weights of the items in a single line
    scanf("%d", &n);
    int *arr = (int *)malloc(n * sizeof(int));

    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    clearInputBuffer(); // Clear the input buffer

    printf("Enter the capacity of each vehicle: ");
    scanf("%d", &capacity);

    int result = minVehicles(arr, n, capacity);

    printf("Minimum number of vehicles required: %d\n", result);

    free(arr);

    return 0;
}

Solusi 2

Anda harus membersihkan dan men-debug kode Anda. Mulailah dengan Interaksi Pengguna yang ditingkatkan.

C++
int main() {
    int n, capacity;
    printf("Enter the count of the items: ");
    
    // Read the weights of the items in a single line
    scanf("%d", &n);
    int *arr = (int *)malloc(n * sizeof(int));

    for (int i = 0; i < n; i++) {
        printf("Enter the weights of the item %d separated by space: ", i);
        scanf("%d", &arr[i]);
    }

Anda sebaiknya menggunakan beberapa struct dalam kode Anda agar lebih mudah dibaca, seperti untuk kendaraan

C++
struct Vehicle {
 int identifier; // like index
 int maxLoad;
 int currentLoad;
}

Hasilkan lebih banyak keluaran, seperti pada perbandingan.

Kunjungi beberapa Pelajari tutorial C menyelesaikan pekerjaan rumahmu.

コメント

タイトルとURLをコピーしました