Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Số hình chữ nhật kích thước cho trước cắt được từ tờ giấy trong C


Cho kích thước tờ giấy: chiều dài L, chiều rộng B. Cũng cho kích thước hình chữ nhật nhỏ: dài l, rộng b. Tìm số hình chữ nhật nhỏ tối đa cắt được từ tờ giấy.

Các bước:

  • Xét đặt ngang: chiều dài L với l, chiều rộng B với b, đếm số hình chữ nhật.

  • Xét đặt dọc: tương tự, đếm lại. Trả về giá trị lớn nhất.

Hiểu qua ví dụ.

Đầu vào

Giấy L=18, B=6
HCN nhỏ l=4, b=3

Đầu ra

Số HCN tối đa: 8

Giải thích

Ngang: 18/4=4, 6/3=2 -> 2*4=8 HCN
Dọc: 18/3=6, 6/4=1 -> 6*1=6 HCN
Tối đa = 8

Đầu vào

Giấy L=10, B=6
HCN nhỏ l=4, b=2

Đầu ra

Số HCN tối đa: 6

Giải thích

Ngang: 10/4=2, 6/2=3 -> 2*3=6
Dọc: 10/2=5, 6/4=1 -> 5*1=5
Tối đa = 6

Phương pháp chương trình

  • Biến Length, Breadth lưu kích thước giấy.

  • Biến len, bre lưu kích thước HCN nhỏ.

  • Hàm maxRectangles(int L, int B, int l, int b) trả về số HCN tối đa.

  • Biến numh, numv lưu số HCN cắt ngang và dọc.

  • Ngang: cols = L/l, rows = B/b, numh = rows*cols.

  • Dọc: cols = L/b, rows = B/l, numv = rows*cols.

  • Trả về max(numh, numv).

Ví dụ

#include <stdio.h>
int maxRectangles(int L, int B, int l, int b) {
    int numh = 0, numv = 0;
    // Cắt ngang nếu khả thi
    if (l <= L && b <= B) {
        int cols = B / b;
        int rows = L / l;
        numh = rows * cols;
    }
    // Cắt dọc nếu khả thi
    if (l <= B && b <= L) {
        int cols = L / b;
        int rows = B / l;
        numv = rows * cols;
    }
    return numh > numv ? numh : numv;
}
int main() {
    int Length = 18;
    int Breadth = 6;
    int len = 4, bre = 3;
    printf("So HCN toi da: %d", maxRectangles(Length, Breadth, len, bre));
    return 0;
}

Kết quả

Chạy code cho đầu ra:

So HCN kich thuoc cho truoc cat duoc tu to giay: 8