Trả lời câu hỏi chuối Warhouse

lập trình


Godown, hay nói cách khác được gọi là nhà kho, là một tòa nhà được sử dụng để lưu trữ nguyên liệu thô hoặc hàng hóa sản xuất cho đến khi chúng được xuất khẩu sang nơi khác.

Có n số thùng được sử dụng để bảo quản và làm chín số lượng lớn chuối. Sau khi chuối chín, mỗi chủ sở hữu godown sẽ đóng gói tất cả số chuối đó thành một khối và vận chuyển đến sân bay để xuất khẩu sang các nước khác. Tất cả những nơi này đều gần nhau và chủ sở hữu rất thân thiện. Vì vậy, khi vận chuyển chuối, họ muốn chia sẻ phương tiện (nếu có thể) để giảm chi phí vận chuyển. Nhưng chỉ có hai người có thể đi chung một phương tiện và mỗi phương tiện có thể chở trọng lượng “w” tấn cùng một lúc.

Cho một mảng biểu thị trọng lượng chuối của mỗi chủ sở hữu, giới hạn tối đa mà chiếc xe có thể chở được, hãy tìm số lượng xe tối thiểu cần thiết để vận chuyển tất cả số chuối đến sân bay.
Lưu ý: Không có tải nào nặng hơn giới hạn cho phép.
Trọng lượng của chuối được đo bằng tấn.

Những gì tôi đã thử:

nhận được câu trả lời sai cho mã

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;
}

Giải pháp 2

Bạn phải dọn dẹp và gỡ lỗi mã của mình. Bắt đầu với sự tương tác người dùng được cải thiện.

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]);
    }

Tốt hơn hết bạn nên sử dụng một số cấu trúc trong mã của mình để dễ đọc hơn, chẳng hạn như đối với một chiếc xe

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

Tạo ra nhiều đầu ra hơn, giống như trong phần so sánh.

Ghé thăm một số Hướng dẫn học C để giải quyết bài tập về nhà của bạn.

コメント

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