Trong bài toán này, cho mảng N số nguyên biểu thị độ dài N que. Nhiệm vụ in số lượng hình chữ nhật và hình vuông có thể tạo từ các que cho trước.
Ví dụ minh họa:
Đầu vào - mảng = {5, 5, 7, 7, 1, 4}
Kết quả - 1
Giải thích - Hình chữ nhật cạnh 5, 5, 7, 7.
Để giải bài toán, kiểm tra có thể tạo hình chữ nhật/vuông không.
Để tạo hình vuông hoặc chữ nhật, cần hai que cùng độ dài (2 cho chữ nhật, 4 cho vuông). Kiểm tra các cặp que cùng độ dài. Sắp xếp mảng để tìm cặp dễ dàng. Nửa số cặp tổng cộng sẽ là số hình chữ nhật/vuông có thể tạo.
Chương trình minh họa
#include <bits/stdc++.h>
using namespace std;
int countRecSqr(int sticks[], int n) {
sort(sticks, sticks + n);
int pairs = 0;
for (int i = 0; i < n - 1; i++) {
if (sticks[i] == sticks[i + 1]) {
pairs++;
i++;
}
}
return pairs / 2;
}
int main() {
int sticks[] = { 2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9 };
int n = sizeof(sticks) / sizeof(sticks[0]);
cout << "Tổng số hình vuông hoặc chữ nhật có thể tạo là ";
cout << countRecSqr(sticks, n);
return 0;
}
Kết quả
Tổng số hình vuông hoặc chữ nhật có thể tạo là 3